在Xcode 7 GM中,我开始收到以下警告:

指针缺少可空性类型说明符(_Nonnull、_Nullable或_Null_unspecified)

在以下函数声明中(NSUserDefaults扩展)

- (void)setObject:(nullable id)value
           forKey:(NSString *)defaultName
    objectChanged:(void(^)(NSUserDefaults *userDefaults, id value))changeHandler
    objectRamains:(void(^)(NSUserDefaults *userDefaults, id value))remainHandler;

Screenshot

为什么会显示此警告?我应该如何修复它?

推荐答案

还需要为处理程序/块指定nullable

- (void)setObject:(nullable id)value
           forKey:(nonnull NSString *)defaultName
    objectChanged:(nullable void(^)(NSUserDefaults *userDefaults, id value))changeHandler
    objectRamains:(nullable void(^)(NSUserDefaults *userDefaults, id value))remainHandler;

为什么?这是Swift 的功劳.Swift允许可选参数(?),哪个目标C没有.这是两者之间的桥梁,让Swift编译器知道这些参数是可选的."Nonnull"将告诉Swift编译器参数是必需的.一个可以为null的参数,表明它是可选的

欲了解更多信息,请阅读:

Objective-c相关问答推荐

Objective-C NSMutableArray 在枚举时发生了变异?

Objective-C 静态、外部、公共变量

是否可以 suppress Xcode 4 静态分析器警告?

如何将 NSDate 转换为今天、昨天、一周前、一个月前、一年前等相对格式?

NSPredicate 与整数比较

不区分大小写的核心数据 CONTAINS 或 BEGINS WITH 约束

如何知道 NSAssert 在发布版本中是否被禁用?

didReceiveRemoteNotification:当应用程序处于后台并且未连接到Xcode时未调用fetchCompletionHandler

CoreData 关系故障?

在 NSMutableArray 的开头添加一个对象?

如何在 iPhone 上默认显示数字键盘?

如何为图层 shadowOpacity 设置动画?

如何在 iOS 7 启动期间更改状态栏样式

代码问题:格式字符串不是字符串文字

如何将 NSOperationQueue 与 NSURLSession 一起使用?

如何在 iOS 中计算 SHA-2(最好是 SHA 256 或 SHA 512)哈希?

可以在 NSLocalizedString 中使用变量和/或参数吗?

为什么 Select Emacs/Vim/Textmate? Xcode 还不够好吗?

哪个是正确的,nil 或 NULL,来标记没有 Objective-C 块?

CALayer:仅在一侧添加边框