185d50640SSaleem Abdulrasool================================================ 285d50640SSaleem AbdulrasoolAPI Notes: Annotations Without Modifying Headers 385d50640SSaleem Abdulrasool================================================ 485d50640SSaleem Abdulrasool 585d50640SSaleem Abdulrasool**The Problem:** You have headers you want to use, but you also want to add 685d50640SSaleem Abdulrasoolextra information to the API. You don't want to put that information in the 785d50640SSaleem Abdulrasoolheaders themselves --- perhaps because you want to keep them clean for other 885d50640SSaleem Abdulrasoolclients, or perhaps because they're from some open source project and you don't 985d50640SSaleem Abdulrasoolwant to modify them at all. 1085d50640SSaleem Abdulrasool 1185d50640SSaleem Abdulrasool**Incomplete solution:** Redeclare all the interesting parts of the API in your 1285d50640SSaleem Abdulrasoolown header and add the attributes you want. Unfortunately, this: 1385d50640SSaleem Abdulrasool 1485d50640SSaleem Abdulrasool* doesn't work with attributes that must be present on a definition 1585d50640SSaleem Abdulrasool* doesn't allow changing the definition in other ways 1685d50640SSaleem Abdulrasool* requires your header to be included in any client code to take effect 1785d50640SSaleem Abdulrasool 1885d50640SSaleem Abdulrasool**Better solution:** Provide a "sidecar" file with the information you want to 1985d50640SSaleem Abdulrasooladd, and have that automatically get picked up by the module-building logic in 2085d50640SSaleem Abdulrasoolthe compiler. 2185d50640SSaleem Abdulrasool 2285d50640SSaleem AbdulrasoolThat's API notes. 2385d50640SSaleem Abdulrasool 2485d50640SSaleem AbdulrasoolAPI notes use a YAML-based file format. YAML is a format best explained by 25e43a85a3SYuki Okushiexample, so here is a `small example 26e43a85a3SYuki Okushi<https://github.com/llvm/llvm-project/blob/main/clang/test/APINotes/Inputs/Frameworks/SomeKit.framework/Headers/SomeKit.apinotes>`_ 27e43a85a3SYuki Okushifrom the compiler test suite of API 2885d50640SSaleem Abdulrasoolnotes for a hypothetical "SomeKit" framework. 2985d50640SSaleem Abdulrasool 3085d50640SSaleem Abdulrasool 3185d50640SSaleem AbdulrasoolUsage 3285d50640SSaleem Abdulrasool===== 3385d50640SSaleem Abdulrasool 3485d50640SSaleem AbdulrasoolAPI notes files are found relative to the module map that defines a module, 3585d50640SSaleem Abdulrasoolunder the name "SomeKit.apinotes" for a module named "SomeKit". Additionally, a 3685d50640SSaleem Abdulrasoolfile named "SomeKit_private.apinotes" will also be picked up to go with a 3785d50640SSaleem Abdulrasoolprivate module map. For bare modules these two files will be in the same 3885d50640SSaleem Abdulrasooldirectory as the corresponding module map; for framework modules, they should 3985d50640SSaleem Abdulrasoolbe placed in the Headers and PrivateHeaders directories, respectively. The 4085d50640SSaleem Abdulrasoolmodule map for a private top-level framework module should be placed in the 4185d50640SSaleem AbdulrasoolPrivateHeaders directory as well, though it does not need an additional 4285d50640SSaleem Abdulrasool"_private" suffix on its name. 4385d50640SSaleem Abdulrasool 4485d50640SSaleem AbdulrasoolClang will search for API notes files next to module maps only when passed the 4585d50640SSaleem Abdulrasool``-fapi-notes-modules`` option. 4685d50640SSaleem Abdulrasool 4785d50640SSaleem Abdulrasool 4885d50640SSaleem AbdulrasoolLimitations 4985d50640SSaleem Abdulrasool=========== 5085d50640SSaleem Abdulrasool 5185d50640SSaleem Abdulrasool- Since they're identified by module name, API notes cannot be used to modify 5285d50640SSaleem Abdulrasool arbitrary textual headers. 5385d50640SSaleem Abdulrasool 5485d50640SSaleem Abdulrasool 5585d50640SSaleem Abdulrasool"Versioned" API Notes 5685d50640SSaleem Abdulrasool===================== 5785d50640SSaleem Abdulrasool 5885d50640SSaleem AbdulrasoolMany API notes affect how a C API is imported into Swift. In order to change 5985d50640SSaleem Abdulrasoolthat behavior while still remaining backwards-compatible, API notes can be 6085d50640SSaleem Abdulrasoolselectively applied based on the Swift compatibility version provided to the 6185d50640SSaleem Abdulrasoolcompiler (e.g. ``-fapi-notes-swift-version=5``). The rule is that an 6285d50640SSaleem Abdulrasoolexplicitly-versioned API note applies to that version *and all earlier 6385d50640SSaleem Abdulrasoolversions,* and any applicable explicitly-versioned API note takes precedence 6485d50640SSaleem Abdulrasoolover an unversioned API note. 6585d50640SSaleem Abdulrasool 6685d50640SSaleem Abdulrasool 6785d50640SSaleem AbdulrasoolReference 6885d50640SSaleem Abdulrasool========= 6985d50640SSaleem Abdulrasool 7085d50640SSaleem AbdulrasoolAn API notes file contains a YAML dictionary with the following top-level 7185d50640SSaleem Abdulrasoolentries: 7285d50640SSaleem Abdulrasool 7385d50640SSaleem Abdulrasool:Name: 7485d50640SSaleem Abdulrasool 7585d50640SSaleem Abdulrasool The name of the module (the framework name, for frameworks). Note that this 7685d50640SSaleem Abdulrasool is always the name of a top-level module, even within a private API notes 7785d50640SSaleem Abdulrasool file. 7885d50640SSaleem Abdulrasool 7985d50640SSaleem Abdulrasool :: 8085d50640SSaleem Abdulrasool 8185d50640SSaleem Abdulrasool Name: MyFramework 8285d50640SSaleem Abdulrasool 83058486c9SEgor Zhdan:Classes, Protocols, Tags, Typedefs, Globals, Enumerators, Functions, Namespaces: 8485d50640SSaleem Abdulrasool 8585d50640SSaleem Abdulrasool Arrays of top-level declarations. Each entry in the array must have a 86058486c9SEgor Zhdan 'Name' key with its Objective-C or C++ name. "Tags" refers to structs, 87058486c9SEgor Zhdan C++ classes, enums, and unions; "Classes" refers to Objective-C classes; 88058486c9SEgor Zhdan "Enumerators" refers to enum cases. 8985d50640SSaleem Abdulrasool 9085d50640SSaleem Abdulrasool :: 9185d50640SSaleem Abdulrasool 9285d50640SSaleem Abdulrasool Classes: 9385d50640SSaleem Abdulrasool - Name: MyController 9485d50640SSaleem Abdulrasool … 9585d50640SSaleem Abdulrasool - Name: MyView 9685d50640SSaleem Abdulrasool … 9785d50640SSaleem Abdulrasool 9885d50640SSaleem Abdulrasool:SwiftVersions: 9985d50640SSaleem Abdulrasool 10085d50640SSaleem Abdulrasool Contains explicit information for backwards compatibility. Each entry in 10185d50640SSaleem Abdulrasool the array contains a 'Version' key, which should be set to '4' for 10285d50640SSaleem Abdulrasool annotations that only apply to Swift 4 mode and earlier. The other entries 10385d50640SSaleem Abdulrasool in this dictionary are the same declaration entries as at the top level: 10485d50640SSaleem Abdulrasool Classes, Protocols, Tags, Typedefs, Globals, Enumerators, and Functions. 10585d50640SSaleem Abdulrasool 10685d50640SSaleem Abdulrasool :: 10785d50640SSaleem Abdulrasool 10885d50640SSaleem Abdulrasool SwiftVersions: 10985d50640SSaleem Abdulrasool - Version: 4 11085d50640SSaleem Abdulrasool Classes: … 11185d50640SSaleem Abdulrasool Protocols: … 11285d50640SSaleem Abdulrasool 11385d50640SSaleem AbdulrasoolEach entry under 'Classes' and 'Protocols' can contain "Methods" and 11485d50640SSaleem Abdulrasool"Properties" arrays, in addition to the attributes described below: 11585d50640SSaleem Abdulrasool 11685d50640SSaleem Abdulrasool:Methods: 11785d50640SSaleem Abdulrasool 11885d50640SSaleem Abdulrasool Identified by 'Selector' and 'MethodKind'; the MethodKind is either 11985d50640SSaleem Abdulrasool "Instance" or "Class". 12085d50640SSaleem Abdulrasool 12185d50640SSaleem Abdulrasool :: 12285d50640SSaleem Abdulrasool 12385d50640SSaleem Abdulrasool Classes: 12485d50640SSaleem Abdulrasool - Name: UIViewController 12585d50640SSaleem Abdulrasool Methods: 12685d50640SSaleem Abdulrasool - Selector: "presentViewController:animated:" 12785d50640SSaleem Abdulrasool MethodKind: Instance 12885d50640SSaleem Abdulrasool … 12985d50640SSaleem Abdulrasool 13085d50640SSaleem Abdulrasool:Properties: 13185d50640SSaleem Abdulrasool 13285d50640SSaleem Abdulrasool Identified by 'Name' and 'PropertyKind'; the PropertyKind is also either 13385d50640SSaleem Abdulrasool "Instance" or "Class". 13485d50640SSaleem Abdulrasool 13585d50640SSaleem Abdulrasool :: 13685d50640SSaleem Abdulrasool 13785d50640SSaleem Abdulrasool Classes: 13885d50640SSaleem Abdulrasool - Name: UIView 13985d50640SSaleem Abdulrasool Properties: 14085d50640SSaleem Abdulrasool - Name: subviews 14185d50640SSaleem Abdulrasool PropertyKind: Instance 14285d50640SSaleem Abdulrasool … 14385d50640SSaleem Abdulrasool 14485d50640SSaleem AbdulrasoolEach declaration supports the following annotations (if relevant to that 14585d50640SSaleem Abdulrasooldeclaration kind), all of which are optional: 14685d50640SSaleem Abdulrasool 14785d50640SSaleem Abdulrasool:SwiftName: 14885d50640SSaleem Abdulrasool 14985d50640SSaleem Abdulrasool Equivalent to ``NS_SWIFT_NAME``. For a method, must include the full Swift name 15085d50640SSaleem Abdulrasool with all arguments. Use "_" to omit an argument label. 15185d50640SSaleem Abdulrasool 15285d50640SSaleem Abdulrasool :: 15385d50640SSaleem Abdulrasool 15485d50640SSaleem Abdulrasool - Selector: "presentViewController:animated:" 15585d50640SSaleem Abdulrasool MethodKind: Instance 15685d50640SSaleem Abdulrasool SwiftName: "present(_:animated:)" 15785d50640SSaleem Abdulrasool 15885d50640SSaleem Abdulrasool - Class: NSBundle 15985d50640SSaleem Abdulrasool SwiftName: Bundle 16085d50640SSaleem Abdulrasool 161058486c9SEgor Zhdan:SwiftImportAs: 162058486c9SEgor Zhdan 163058486c9SEgor Zhdan For a class, possible values are ``owned`` (equivalent to 164058486c9SEgor Zhdan ``SWIFT_SELF_CONTAINED``) or ``reference`` (equivalent to 165058486c9SEgor Zhdan ``SWIFT_SHARED_REFERENCE``, also requires specifying ``SwiftReleaseOp`` and 166058486c9SEgor Zhdan ``SwiftRetainOp``). 167058486c9SEgor Zhdan 168058486c9SEgor Zhdan For a method, possible values are ``unsafe`` (equivalent 169058486c9SEgor Zhdan to ``SWIFT_RETURNS_INDEPENDENT_VALUE``) or ``computed_property`` (equivalent to 170058486c9SEgor Zhdan ``SWIFT_COMPUTED_PROPERTY``). 171058486c9SEgor Zhdan 172058486c9SEgor Zhdan :: 173058486c9SEgor Zhdan 174058486c9SEgor Zhdan Tags: 175*f96ea898SEgor Zhdan - Name: OwnedStorage 176*f96ea898SEgor Zhdan SwiftImportAs: owned 177*f96ea898SEgor Zhdan 178*f96ea898SEgor Zhdan:SwiftRetainOp, SwiftReleaseOp: 179*f96ea898SEgor Zhdan 180*f96ea898SEgor Zhdan Controls the lifetime operations of a class which uses custom reference 181*f96ea898SEgor Zhdan counting. The class must be annotated as a reference type using 182*f96ea898SEgor Zhdan ``SwiftImportAs: reference``. The values are either names of global functions, 183*f96ea898SEgor Zhdan each taking a single parameter of a pointer type, or ``immortal`` for a type 184*f96ea898SEgor Zhdan that is considered alive for the duration of the program. 185*f96ea898SEgor Zhdan 186*f96ea898SEgor Zhdan :: 187*f96ea898SEgor Zhdan 188*f96ea898SEgor Zhdan Tags: 189058486c9SEgor Zhdan - Name: RefCountedStorage 190058486c9SEgor Zhdan SwiftImportAs: reference 191058486c9SEgor Zhdan SwiftReleaseOp: RCRelease 192058486c9SEgor Zhdan SwiftRetainOp: RCRetain 193*f96ea898SEgor Zhdan - Name: ImmortalSingleton 194*f96ea898SEgor Zhdan SwiftImportAs: reference 195*f96ea898SEgor Zhdan SwiftReleaseOp: immortal 196*f96ea898SEgor Zhdan SwiftRetainOp: immortal 197058486c9SEgor Zhdan 198058486c9SEgor Zhdan:SwiftCopyable: 199058486c9SEgor Zhdan 200058486c9SEgor Zhdan Allows annotating a C++ class as non-copyable in Swift. Equivalent to 201058486c9SEgor Zhdan ``SWIFT_NONCOPYABLE``, or to an explicit conformance ``: ~Copyable``. 202058486c9SEgor Zhdan 203058486c9SEgor Zhdan :: 204058486c9SEgor Zhdan 205058486c9SEgor Zhdan Tags: 206058486c9SEgor Zhdan - Name: tzdb 207058486c9SEgor Zhdan SwiftCopyable: false 208058486c9SEgor Zhdan 209dc8c217dSEgor Zhdan:SwiftConformsTo: 210dc8c217dSEgor Zhdan 211dc8c217dSEgor Zhdan Allows annotating a C++ class as conforming to a Swift protocol. Equivalent 212dc8c217dSEgor Zhdan to ``SWIFT_CONFORMS_TO_PROTOCOL``. The value is a module-qualified name of a 213dc8c217dSEgor Zhdan Swift protocol. 214dc8c217dSEgor Zhdan 215dc8c217dSEgor Zhdan :: 216dc8c217dSEgor Zhdan 217dc8c217dSEgor Zhdan Tags: 218dc8c217dSEgor Zhdan - Name: vector 219dc8c217dSEgor Zhdan SwiftConformsTo: Cxx.CxxSequence 220dc8c217dSEgor Zhdan 22185d50640SSaleem Abdulrasool:Availability, AvailabilityMsg: 22285d50640SSaleem Abdulrasool 22385d50640SSaleem Abdulrasool A value of "nonswift" is equivalent to ``NS_SWIFT_UNAVAILABLE``. A value of 22485d50640SSaleem Abdulrasool "available" can be used in the "SwiftVersions" section to undo the effect of 22585d50640SSaleem Abdulrasool "nonswift". 22685d50640SSaleem Abdulrasool 22785d50640SSaleem Abdulrasool :: 22885d50640SSaleem Abdulrasool 22985d50640SSaleem Abdulrasool - Selector: "dealloc" 23085d50640SSaleem Abdulrasool MethodKind: Instance 23185d50640SSaleem Abdulrasool Availability: nonswift 23285d50640SSaleem Abdulrasool AvailabilityMsg: "prefer 'deinit'" 23385d50640SSaleem Abdulrasool 23485d50640SSaleem Abdulrasool:SwiftPrivate: 23585d50640SSaleem Abdulrasool 23685d50640SSaleem Abdulrasool Equivalent to NS_REFINED_FOR_SWIFT. 23785d50640SSaleem Abdulrasool 23885d50640SSaleem Abdulrasool :: 23985d50640SSaleem Abdulrasool 24085d50640SSaleem Abdulrasool - Name: CGColorEqualToColor 24185d50640SSaleem Abdulrasool SwiftPrivate: true 24285d50640SSaleem Abdulrasool 24385d50640SSaleem Abdulrasool:Nullability: 24485d50640SSaleem Abdulrasool 24585d50640SSaleem Abdulrasool Used for properties and globals. There are four options, identified by their 24685d50640SSaleem Abdulrasool initials: 24785d50640SSaleem Abdulrasool 24885d50640SSaleem Abdulrasool - ``Nonnull`` or ``N`` (corresponding to ``_Nonnull``) 24985d50640SSaleem Abdulrasool - ``Optional`` or ``O`` (corresponding to ``_Nullable``) 25085d50640SSaleem Abdulrasool - ``Unspecified`` or ``U`` (corresponding to ``_Null_unspecified``) 25185d50640SSaleem Abdulrasool - ``Scalar`` or ``S`` (deprecated) 25285d50640SSaleem Abdulrasool 25385d50640SSaleem Abdulrasool Note that 'Nullability' is overridden by 'Type', even in a "SwiftVersions" 25485d50640SSaleem Abdulrasool section. 25585d50640SSaleem Abdulrasool 25685d50640SSaleem Abdulrasool .. note:: 25785d50640SSaleem Abdulrasool 25885d50640SSaleem Abdulrasool 'Nullability' can also be used to describe the argument types of methods 25985d50640SSaleem Abdulrasool and functions, but this usage is deprecated in favor of 'Parameters' (see 26085d50640SSaleem Abdulrasool below). 26185d50640SSaleem Abdulrasool 26285d50640SSaleem Abdulrasool :: 26385d50640SSaleem Abdulrasool 26485d50640SSaleem Abdulrasool - Name: dataSource 26585d50640SSaleem Abdulrasool Nullability: O 26685d50640SSaleem Abdulrasool 26785d50640SSaleem Abdulrasool:NullabilityOfRet: 26885d50640SSaleem Abdulrasool 26985d50640SSaleem Abdulrasool Used for methods and functions. Describes the nullability of the return type. 27085d50640SSaleem Abdulrasool 27185d50640SSaleem Abdulrasool Note that 'NullabilityOfRet' is overridden by 'ResultType', even in a 27285d50640SSaleem Abdulrasool "SwiftVersions" section. 27385d50640SSaleem Abdulrasool 27485d50640SSaleem Abdulrasool .. warning:: 27585d50640SSaleem Abdulrasool 27685d50640SSaleem Abdulrasool Due to a compiler bug, 'NullabilityOfRet' may change nullability of the 27785d50640SSaleem Abdulrasool parameters as well (rdar://30544062). Avoid using it and instead use 27885d50640SSaleem Abdulrasool 'ResultType' and specify the return type along with a nullability 27985d50640SSaleem Abdulrasool annotation (see documentation for 'ResultType'). 28085d50640SSaleem Abdulrasool 28185d50640SSaleem Abdulrasool :: 28285d50640SSaleem Abdulrasool 28385d50640SSaleem Abdulrasool - Selector: superclass 28485d50640SSaleem Abdulrasool MethodKind: Class 28585d50640SSaleem Abdulrasool NullabilityOfRet: O 28685d50640SSaleem Abdulrasool 28785d50640SSaleem Abdulrasool:Type: 28885d50640SSaleem Abdulrasool 28985d50640SSaleem Abdulrasool Used for properties and globals. This completely overrides the type of the 29085d50640SSaleem Abdulrasool declaration; it should ideally only be used for Swift backwards 29185d50640SSaleem Abdulrasool compatibility, when existing type information has been made more precise in a 29285d50640SSaleem Abdulrasool header. Prefer 'Nullability' and other annotations when possible. 29385d50640SSaleem Abdulrasool 29485d50640SSaleem Abdulrasool We parse the specified type as if it appeared at the location of the 29585d50640SSaleem Abdulrasool declaration whose type is being modified. Macros are not available and 29685d50640SSaleem Abdulrasool nullability must be applied explicitly (even in an ``NS_ASSUME_NONNULL_BEGIN`` 29785d50640SSaleem Abdulrasool section). 29885d50640SSaleem Abdulrasool 29985d50640SSaleem Abdulrasool :: 30085d50640SSaleem Abdulrasool 30185d50640SSaleem Abdulrasool - Name: delegate 30285d50640SSaleem Abdulrasool PropertyKind: Instance 30385d50640SSaleem Abdulrasool Type: "id" 30485d50640SSaleem Abdulrasool 30585d50640SSaleem Abdulrasool:ResultType: 30685d50640SSaleem Abdulrasool 30785d50640SSaleem Abdulrasool Used for methods and functions. This completely overrides the return type; it 30885d50640SSaleem Abdulrasool should ideally only be used for Swift backwards compatibility, when existing 30985d50640SSaleem Abdulrasool type information has been made more precise in a header. 31085d50640SSaleem Abdulrasool 31185d50640SSaleem Abdulrasool We parse the specified type as if it appeared at the location of the 31285d50640SSaleem Abdulrasool declaration whose type is being modified. Macros are not available and 31385d50640SSaleem Abdulrasool nullability must be applied explicitly (even in an ``NS_ASSUME_NONNULL_BEGIN`` 31485d50640SSaleem Abdulrasool section). 31585d50640SSaleem Abdulrasool 31685d50640SSaleem Abdulrasool :: 31785d50640SSaleem Abdulrasool 31885d50640SSaleem Abdulrasool - Selector: "subviews" 31985d50640SSaleem Abdulrasool MethodKind: Instance 32085d50640SSaleem Abdulrasool ResultType: "NSArray * _Nonnull" 32185d50640SSaleem Abdulrasool 32285d50640SSaleem Abdulrasool:SwiftImportAsAccessors: 32385d50640SSaleem Abdulrasool 32485d50640SSaleem Abdulrasool Used for properties. If true, the property will be exposed in Swift as its 32585d50640SSaleem Abdulrasool accessor methods, rather than as a computed property using ``var``. 32685d50640SSaleem Abdulrasool 32785d50640SSaleem Abdulrasool :: 32885d50640SSaleem Abdulrasool 32985d50640SSaleem Abdulrasool - Name: currentContext 33085d50640SSaleem Abdulrasool PropertyKind: Class 33185d50640SSaleem Abdulrasool SwiftImportAsAccessors: true 33285d50640SSaleem Abdulrasool 33385d50640SSaleem Abdulrasool:NSErrorDomain: 33485d50640SSaleem Abdulrasool 33585d50640SSaleem Abdulrasool Used for ``NSError`` code enums. The value is the name of the associated 33685d50640SSaleem Abdulrasool domain ``NSString`` constant; an empty string (``""``) means the enum is a 33785d50640SSaleem Abdulrasool normal enum rather than an error code. 33885d50640SSaleem Abdulrasool 33985d50640SSaleem Abdulrasool :: 34085d50640SSaleem Abdulrasool 34185d50640SSaleem Abdulrasool - Name: MKErrorCode 34285d50640SSaleem Abdulrasool NSErrorDomain: MKErrorDomain 34385d50640SSaleem Abdulrasool 34485d50640SSaleem Abdulrasool:SwiftWrapper: 34585d50640SSaleem Abdulrasool 34685d50640SSaleem Abdulrasool Controls ``NS_STRING_ENUM`` and ``NS_EXTENSIBLE_STRING_ENUM``. There are three 34785d50640SSaleem Abdulrasool options: 34885d50640SSaleem Abdulrasool 34985d50640SSaleem Abdulrasool - "struct" (extensible) 35085d50640SSaleem Abdulrasool - "enum" 35185d50640SSaleem Abdulrasool - "none" 35285d50640SSaleem Abdulrasool 35385d50640SSaleem Abdulrasool Note that even an "enum" wrapper is still presented as a struct in Swift; 35485d50640SSaleem Abdulrasool it's just a "more enum-like" struct. 35585d50640SSaleem Abdulrasool 35685d50640SSaleem Abdulrasool :: 35785d50640SSaleem Abdulrasool 35885d50640SSaleem Abdulrasool - Name: AVMediaType 35985d50640SSaleem Abdulrasool SwiftWrapper: none 36085d50640SSaleem Abdulrasool 36185d50640SSaleem Abdulrasool:EnumKind: 36285d50640SSaleem Abdulrasool 36385d50640SSaleem Abdulrasool Has the same effect as ``NS_ENUM`` and ``NS_OPTIONS``. There are four options: 36485d50640SSaleem Abdulrasool 36585d50640SSaleem Abdulrasool - "NSEnum" / "CFEnum" 36685d50640SSaleem Abdulrasool - "NSClosedEnum" / "CFClosedEnum" 36785d50640SSaleem Abdulrasool - "NSOptions" / "CFOptions" 36885d50640SSaleem Abdulrasool - "none" 36985d50640SSaleem Abdulrasool 37085d50640SSaleem Abdulrasool :: 37185d50640SSaleem Abdulrasool 37285d50640SSaleem Abdulrasool - Name: GKPhotoSize 37385d50640SSaleem Abdulrasool EnumKind: none 37485d50640SSaleem Abdulrasool 37585d50640SSaleem Abdulrasool:Parameters: 37685d50640SSaleem Abdulrasool 37785d50640SSaleem Abdulrasool Used for methods and functions. Parameters are identified by a 0-based 37885d50640SSaleem Abdulrasool 'Position' and support the 'Nullability', 'NoEscape', and 'Type' keys. 37985d50640SSaleem Abdulrasool 38085d50640SSaleem Abdulrasool .. note:: 38185d50640SSaleem Abdulrasool 38285d50640SSaleem Abdulrasool Using 'Parameters' within a parameter entry to describe the parameters of a 38385d50640SSaleem Abdulrasool block is not implemented. Use 'Type' on the entire parameter instead. 38485d50640SSaleem Abdulrasool 38585d50640SSaleem Abdulrasool :: 38685d50640SSaleem Abdulrasool 38785d50640SSaleem Abdulrasool - Selector: "isEqual:" 38885d50640SSaleem Abdulrasool MethodKind: Instance 38985d50640SSaleem Abdulrasool Parameters: 39085d50640SSaleem Abdulrasool - Position: 0 39185d50640SSaleem Abdulrasool Nullability: O 39285d50640SSaleem Abdulrasool 39385d50640SSaleem Abdulrasool:NoEscape: 39485d50640SSaleem Abdulrasool 39585d50640SSaleem Abdulrasool Used only for block parameters. Equivalent to ``NS_NOESCAPE``. 39685d50640SSaleem Abdulrasool 39785d50640SSaleem Abdulrasool :: 39885d50640SSaleem Abdulrasool 39985d50640SSaleem Abdulrasool - Name: dispatch_sync 40085d50640SSaleem Abdulrasool Parameters: 40185d50640SSaleem Abdulrasool - Position: 0 40285d50640SSaleem Abdulrasool NoEscape: true 40385d50640SSaleem Abdulrasool 40485d50640SSaleem Abdulrasool:SwiftBridge: 40585d50640SSaleem Abdulrasool 40685d50640SSaleem Abdulrasool Used for Objective-C class types bridged to Swift value types. An empty 40785d50640SSaleem Abdulrasool string ("") means a type is not bridged. Not supported outside of Apple 40885d50640SSaleem Abdulrasool frameworks (the Swift side of it requires conforming to implementation-detail 40985d50640SSaleem Abdulrasool protocols that are subject to change). 41085d50640SSaleem Abdulrasool 41185d50640SSaleem Abdulrasool :: 41285d50640SSaleem Abdulrasool 41385d50640SSaleem Abdulrasool - Name: NSIndexSet 41485d50640SSaleem Abdulrasool SwiftBridge: IndexSet 41585d50640SSaleem Abdulrasool 41685d50640SSaleem Abdulrasool:DesignatedInit: 41785d50640SSaleem Abdulrasool 41885d50640SSaleem Abdulrasool Used for init methods. Equivalent to ``NS_DESIGNATED_INITIALIZER``. 41985d50640SSaleem Abdulrasool 42085d50640SSaleem Abdulrasool :: 42185d50640SSaleem Abdulrasool 42285d50640SSaleem Abdulrasool - Selector: "initWithFrame:" 42385d50640SSaleem Abdulrasool MethodKind: Instance 42485d50640SSaleem Abdulrasool DesignatedInit: true 425