码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C基础之@synthesize, @dynamic

时间:2018-05-22 18:26:08      阅读:412      评论:0      收藏:0      [点我收藏+]

标签:mic   变量   property   表达   现在   使用   影响   情况下   syn   

Objective-C基础之@synthesize, @dynamic

OC属性用一个表达式最能清楚的解释其实质:property = ivar + setter+getter,也就是说一个属性是由实例变量+setter方法+getter方法组成。那么现在编译器帮我们做了这件事,在很早之前的版本中需要我们手动合成,那么@synthesize property=ivar这种形式的合成。我们知道,什么情况下编译器不会自动给我们合成属性:

  1. 同时实现setter、getter方法的时候,系统不会再合成ivar 和setter 、getter(当然只读属性,重写getter方法)
  2. 使用@dynamic propertyname的时候
  3. protocol 中定义的属性,不会自动合成setter、getter方法实现,只会生成声明
  4. category 中的属性,会生成getter setter 方法,但是并不会生成ivar,所以需要我们利用runtime objc_setAssociatedObject 和 objc_getAssociatedObject 绑定实例变量和获取实例变量
  5. 重载的属性不会生成

 

 

systhesize propertyname = ivarname ,并不会影响编译器合不合成setter、只会影响合成实例变量的名字 
@dynamic 会影响编译器是否合成ivar 和getter setter方法,用词关键字,该属性将不会合成ivar 和setter getter 方法

Objective-C基础之@synthesize, @dynamic

标签:mic   变量   property   表达   现在   使用   影响   情况下   syn   

原文地址:https://www.cnblogs.com/wannaGoBoy/p/9073161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!