XCode中与null相关的属性属性有什么作用?

Gee*_*e.E 10 xcode objective-c

使用XCode 6.3,我注意到了一些属性属性,即:

  • nonnull
  • null_resettable
  • nullable

有人可以解释他们在申请时做了什么吗?

Gre*_*reg 11

Apple添加了两个新类型的注释:__nullable和__nonnull.__nullable指针可能具有NULL或nil值,而__nonnull指针不应具有.

正如你在swift中应该知道的那样,你可以使用选项(?)但是在Objective-C中你不能.这些属性允许您创建Objective-C代码,当您违反规则时,swift和编译器会更容易理解这些代码,例如:

@property (copy, nullable) NSString *name;
@property (copy, nonnull) NSArray *allItems;
Run Code Online (Sandbox Code Playgroud)

这将被迅速"翻译"为:

var name: String?
var allItems: [AnyObject]!
Run Code Online (Sandbox Code Playgroud)

这取自NSHipster:

nonnull:表示指针应该/将永远不会为nil.用nonnull注释的指针作为非可选的基值(即NSData)导入Swift.

nullable:表示在一般练习中指针可以为nil.导入Swift作为可选值(NSURL?).

null_unspecified:继续导入Swift的当前功能,作为隐式解包的可选项,理想情况下仅在此注释过程中使用.

null_resettable:表示虽然属性始终具有值,但可以通过分配nil来重置它.具有非零默认值的属性可以通过这种方式注释,如tintColor.导入Swift作为(相对安全)隐式解包的可选项.相应的文件!

  • 主要是,但如果您尝试将null分配给Objective-C中标记为nonnull的属性,则会收到编译器警告. (2认同)