升级到最新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

时间: 2024-09-29 13:20:17

升级到最新xcode,在使用AFNetworking时遇到了 property synthesis 相关的 error的相关文章

2017最新xcode打包IPA上传App Store完整教程

2017年吐血整理最新xcode打包IPA上传App Store完整教程 分为8 步进行 1.申请iOS证书 2.导入证书到钥匙串 3.xcode配置iOS证书 4.配置xcode打包环境 5.打包并导出IPA包 6.在iTunes Connect创建App 7.上传IPA到iTunes Connect 8.上传IPA成功后到iTunes Connect提交审核 一.申请iOS发布证书和描述文件 1.首先申请一个App IDs(应用身份证).已申请略过. APP IDs在后面很多地方用到 首先打

Nginx平滑升级到最新版本

(一)简述: 早上收到nginx最新漏洞的通知,Nginx官方发布最新的安全公告,在Nginx范围过滤器中发现了一个安全问题(CVE-2017-7529),通过精心构造的恶意请求可能会导致整数溢出并且不正确处理范围,从而导致敏感信息泄漏. 当使用Nginx标准模块时,如果文件头从缓存返回响应,允许攻击者获取缓存文件头.在某些配置中,缓存文件头可能包含后端服务器IP地址或其他敏感信息.此外,如果使用第三方模块有潜在的可能导致拒绝服务. 影响版本 Nginx 0.5.6-1.13.2 漏洞等级 中危

centos升级到最新的mysql

去网站下载mysql的yum源,地址如下: http://repo.mysql.com/ 在linux上先查看系统的版本号,根据版本号对应下载 more /etc/redhat-release rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm yum -y upgrade mysql mysql_upgrade 修改database,table,column字符集 # For each database

ubuntu14.04升级到最新版本

升级系统到最新版本 步骤一:在终端中运行下面的命令,它将安装所有的升级包. $ sudo apt-get update && sudo apt-get dist-upgrade 步骤二:查看是否有最新系统版本可以升级. $sudo update-manager  -c  -d 步骤三:如果有新版本  点击升级 等待升级完成,并重新启动. 升级单个软件到最新版本 同样需要先更新系统资源 $sudo  apt-get update 通过以下命令查询是否有 新版本可以 升级  并升级 $sudo

【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的兼容性(经过尝试,此步骤可以省略) 停掉sqlserver 服务,将需要附件的mdf文件替换掉创建数据生成的mdf,删除掉对应的ldf文件 再启动sqlserver 服务 执行

npm 升级到最新版本

先npm -v查看自己的npm 是否是最新版本,如果不是则进入安装node的文件夹,可通过 where node 查找该文件夹. 进入之后使用: npm i npm -g 之后使用: npm -v 查看是否升级到最新版本了

InstallShield 2012 Spring优惠升级到最新版本(2015.4.30之前)

InstallShield 2012 Spring即将EOF,所以仍在使用InstallShield 2012 Spring的用户请注意下面内容: InstallShield 2012 Spring升级到最新版本InstallShield 2014将可以享受优惠升级,截止时间2015年4月30号. 具体可咨询InstallShield中国区总代世全软件

Debian Stable (wheezy 7.8 )升级到最新的stable (Jessie 8.0)

Debian Stable (wheezy 7.8 )升级到最新的stable (Jessie 8.0) 最新的Debian stable 8.0 (Jessie)已经在前天晚上(4月25日)发布了. 所以我们来升级一下. 从老的稳定版wheezy7.8升级到最新的稳定版Jessie8.0 升级前阅读官方升级说明 升级前准备 修改为Jessie的源 开始升级 -升级前阅读官方升级说明 https://www.debian.org/releases/jessie/amd64/release-not

Linux-OpenSSH升级到最新版本(openssh-7.7p1.tar.gz)

OpenSSH升级到最新版本(openssh-7.7p1.tar.gz)1###############################################################查看升级前的环境[[email protected] zlib-1.2.11]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.8 (Santiago)zlib-1.2.11.tar.gz[[email prote