什么时候用nullable修饰?

比如AFN的接口:

- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
                            parameters:(nullable id)parameters
                              progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress
                               success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
                               failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;

里面就有nullable_Nullable

你们定义接口的时候也会用到这些关键字吗(我从来没用过)?什么时候用?

阅读 4k
3 个回答

这个只是为了规范,不用也可以,当然和swift混编的时候会用到,我只在block的时候用过

这个需要看你方法的功能参数的作用.
以你举的例子为例.

比如:
1) parameters 表示请求参数 . 这个请求参数当然可以为空,所以它是 nullable.
2) progress 表示处理请求进度事件的 block, 这当然可以为空,如果你不需要的话,所以它是 nullable.

所以这都是看方法的功能和参数的使用来设计的.

nullable 我没记错的话是oc为了swift的可选特性做的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题