@synthesize自动合成setter 和getter 和ivar,不过用@property会自动做这个事情。一般不用写,以下是一些特殊场景。
-
当覆盖父类属性的时候,比如类型不一样时,那么会提示已经父类合成过,无法在本类继续合成,需要使用@dynamic来明确意图(不需要自动生成)
-
在协议里使用属性时,@property是无法合成setter和getter 的,必须要使用@synthesize来声明让编译器自动生成,不然会因为找不到方法而发生异常。
-
分类里的@property能合成setter 和getter 但是没有ivar,所以需要运行时动态绑定。
网友评论