@synthesize @dynamic 区别和联系

2020-03-16  本文已影响0人  环宇飞杨

@synthesize自动合成setter 和getter 和ivar,不过用@property会自动做这个事情。一般不用写,以下是一些特殊场景。

  1. 当覆盖父类属性的时候,比如类型不一样时,那么会提示已经父类合成过,无法在本类继续合成,需要使用@dynamic来明确意图(不需要自动生成)

  2. 在协议里使用属性时,@property是无法合成setter和getter 的,必须要使用@synthesize来声明让编译器自动生成,不然会因为找不到方法而发生异常。

  3. 分类里的@property能合成setter 和getter 但是没有ivar,所以需要运行时动态绑定。

上一篇 下一篇

猜你喜欢

热点阅读