属性名不能以关键字开头?

虽然做了这么长时间开发,但是居然还是没有注意以new开头定义属性名,编译器不用运行就直接会提示报错。

property’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects.

今天无意中想起了就想去搞个清楚明白,所以了,我去网上到处找一些资料来看。

才发现好多说的都是直接说属性不能以关键字init, alloc,new,copy,mutableCopy开头。但是感觉都说得不太清楚。

其实我后来仔细思考了一下,我得到的结果是:

 **当程序员定义属性的时候,系统会自动生成getter和sertter方法,而生成的getter方法是以new开头的,这样会与new方法冲突(大多数的类都有一个new方法来创建一个实例对象)。**
 大体内部如何,没有深研究的意义了。

除了就是解决方法:
一,既然不可以用,那就改成其他名字就行了。

二,既然是getter方法的冲突,那就重新定义getter方法

@property(strong,nonatomic,getter=isNewString)NSString *newString;

三,既然是getter的冲突,那我们可以麻烦地把getter方法写出来。

结果我奇迹地发现没问题。一样的运用可以赋值和打印。包括使用用self.newString和使用_newString都完全没有问题。

-(NSString *)newString{
return _newString;
}

所以亲们,遇到了一些问题,有些想不明白的地方,有空还是可以多思考,多看看别人的说法或者 自己再找些方法来试试。这样你理解就会更深了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值