首页 > 代码库 > 升级到最新xcode,在使用AFNetworking时遇到了 property synthesis 相关的 error
升级到最新xcode,在使用AFNetworking时遇到了 property synthesis 相关的 error
將 Xcode 升级到最新,在使用AFNetworking时遇到了 property synthesis 相关的 error,错误信息如下:
Auto property synthesis will not synthesize property ‘request‘ because it is ‘readwrite‘ but it will be synthesized ‘readonly‘ via another property
Auto property synthesis will not synthesize property ‘response‘ because it is ‘readwrite‘ but it will be synthesized ‘readonly‘ via another property
在AFHTTPRequestOperation中定义了:
@property (readwrite, nonatomic, strong) NSURLRequest *request;
@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response;
就是这样的代码,会让 request property 出现 warning。原因是因为 compiler 读取 sub-class 時,会发现 request 明明应该是個 readonly property(super-class 讲的),但你却要将它设为 read write property,所以 compiler 不知道该怎么 auto synthesis。
但你知道 super-class 的实现,也会将这个 property 改成 readwrite,因此你在 sub-class 的实现里这样子写是不会有问题的。可是 compiler 不知道啊,這要怎么办呢?
你要告诉 compiler,要它不用担心。那要怎么告诉 compiler 呢?你需要的是 @dynamic,它是一种给 compiler 的「承诺」,承诺它「虽然你现在不知道该怎么办,但是在 runtime 的时候你就会知道了」。所以只要把代码改成以下这样就可以了:
@implementation AFHTTPRequestOperation
@dynamic response;
@dynamic request;
@end
Auto property synthesis will not synthesize property ‘request‘ because it is ‘readwrite‘ but it will be synthesized ‘readonly‘ via another property
Auto property synthesis will not synthesize property ‘response‘ because it is ‘readwrite‘ but it will be synthesized ‘readonly‘ via another property
在AFHTTPRequestOperation中定义了:
@property (readwrite, nonatomic, strong) NSURLRequest *request;
@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response;
就是这样的代码,会让 request property 出现 warning。原因是因为 compiler 读取 sub-class 時,会发现 request 明明应该是個 readonly property(super-class 讲的),但你却要将它设为 read write property,所以 compiler 不知道该怎么 auto synthesis。
但你知道 super-class 的实现,也会将这个 property 改成 readwrite,因此你在 sub-class 的实现里这样子写是不会有问题的。可是 compiler 不知道啊,這要怎么办呢?
你要告诉 compiler,要它不用担心。那要怎么告诉 compiler 呢?你需要的是 @dynamic,它是一种给 compiler 的「承诺」,承诺它「虽然你现在不知道该怎么办,但是在 runtime 的时候你就会知道了」。所以只要把代码改成以下这样就可以了:
@implementation AFHTTPRequestOperation
@dynamic response;
@dynamic request;
@end
升级到最新xcode,在使用AFNetworking时遇到了 property synthesis 相关的 error
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。