#include <objc/objc-api.h>

objc/objc-api.h

includes: Availability.h, AvailabilityMacros.h, TargetConditionals.h, stddef.h, sys/types.h
28 macros

macroOBJC_API_VERSION

OBJC_API_VERSION 0 or undef: Tiger and earlier API only OBJC_API_VERSION 2: Leopard and later API available
#define OBJC_API_VERSION 2

macroOBJC_NO_GC

GC is unsupported. GC API symbols are exported.
#define OBJC_NO_GC 1

macroNS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER

NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER == 1 marks -[NSObject init] as a designated initializer.
#define NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER 1

macroOBJC_OLD_DISPATCH_PROTOTYPES

The arm64 ABI requires proper casting to ensure arguments are passed * correctly.
#define OBJC_OLD_DISPATCH_PROTOTYPES 0

macroOBJC_AVAILABLE

#define OBJC_AVAILABLE(x, i, t, w, b) __OSX_AVAILABLE(x)  __IOS_AVAILABLE(i)  __TVOS_AVAILABLE(t)
            __WATCHOS_AVAILABLE(w)

macroOBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE

#define OBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE(_start, _dep, _msg) __OSX_DEPRECATED(_start, _dep, _msg)
            __IOS_UNAVAILABLE __TVOS_UNAVAILABLE
            __WATCHOS_UNAVAILABLE

macroOBJC_OSX_AVAILABLE_OTHERS_UNAVAILABLE

#define OBJC_OSX_AVAILABLE_OTHERS_UNAVAILABLE(vers) __OSX_AVAILABLE(vers)
            __IOS_UNAVAILABLE __TVOS_UNAVAILABLE
            __WATCHOS_UNAVAILABLE

macroOBJC_ISA_AVAILABILITY

OBJC_ISA_AVAILABILITY: `isa` will be deprecated or unavailable in the future
#define OBJC_ISA_AVAILABILITY __attribute__((deprecated))

macroOBJC_UNAVAILABLE

OBJC_UNAVAILABLE: unavailable, with a message where supported
#define OBJC_UNAVAILABLE(_msg) __attribute__((unavailable(_msg)))

macroOBJC_DEPRECATED

OBJC_DEPRECATED: deprecated, with a message where supported
#define OBJC_DEPRECATED(_msg) __attribute__((deprecated(_msg)))

macroOBJC_ARC_UNAVAILABLE

OBJC_ARC_UNAVAILABLE: unavailable with -fobjc-arc
#define OBJC_ARC_UNAVAILABLE 

macroOBJC_SWIFT_UNAVAILABLE

OBJC_SWIFT_UNAVAILABLE: unavailable in Swift
#define OBJC_SWIFT_UNAVAILABLE(_msg) __attribute__((availability(swift, unavailable, message=_msg)))

macroOBJC_ARM64_UNAVAILABLE

OBJC_ARM64_UNAVAILABLE: unavailable on arm64 (i.e. stret dispatch)
#define OBJC_ARM64_UNAVAILABLE OBJC_UNAVAILABLE("not available in arm64")

macroOBJC_GC_UNAVAILABLE

OBJC_GC_UNAVAILABLE: unavailable with -fobjc-gc or -fobjc-gc-only
#define OBJC_GC_UNAVAILABLE 

macroOBJC_EXTERN

#define OBJC_EXTERN extern

macroOBJC_VISIBLE

#define OBJC_VISIBLE __attribute__((visibility("default")))

macroOBJC_EXPORT

#define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE

macroOBJC_IMPORT

#define OBJC_IMPORT extern

macroOBJC_ROOT_CLASS

#define OBJC_ROOT_CLASS __attribute__((objc_root_class))

macroOBJC_INLINE

#define OBJC_INLINE __inline

macroOBJC_ENUM

Declares an enum type or option bits type as appropriate for each language.
#define OBJC_ENUM(_type, _name) _type _name; enum

macroOBJC_OPTIONS

#define OBJC_OPTIONS(_type, _name) _type _name; enum

macroOBJC_RETURNS_RETAINED

#define OBJC_RETURNS_RETAINED 

macroOBJC_COLD

OBJC_COLD: very rarely called, e.g. on error path
#define OBJC_COLD 

macroOBJC_NORETURN

OBJC_NORETURN: does not return normally, but may throw
#define OBJC_NORETURN 

macroOBJC_NOESCAPE

OBJC_NOESCAPE: marks a block as nonescaping
#define OBJC_NOESCAPE __attribute__((noescape))

macroOBJC_REFINED_FOR_SWIFT

OBJC_REFINED_FOR_SWIFT: hide the definition from Swift as we have a better one in the overlay
#define OBJC_REFINED_FOR_SWIFT __attribute__((swift_private))

macroOBJC_NOT_TAIL_CALLED

#define OBJC_NOT_TAIL_CALLED __attribute__((not_tail_called))