1、是不是现在的操作是只需要写@property,实现部分的@synthesize就不用写了?比如在.h中写 @property NSString* s; 接下来都是编译器的事?
2、比如@property NSString* name; 那么这个变量名究竟是name还是_name?编译器会自动把 name转换成_name吗?
xcode目前版本可以自动帮你添加setter/getter>. 所以@synthesize不需要了,有@property
你可以通过self.name或_name来访问
readwrite: 产生setter\getter方法
readonly: 只产生简单的getter,没有setter。
assign: 默认类型,setter方法直接赋值,而不进行retain操作
retain: setter方法对参数进行release旧值,再retain新值。
copy: setter方法进行Copy操作,与retain一样
nonatomic: 禁止多线程,变量保护,提高性能
在objective-c中,我们可以用new简单的代替alloc init,我们今天介绍的是类似于new这种简易用法的另一种OC特性,用@property,@synthesize来代替get,set方法,用起来很简单,可以省掉很多的代码量,当需要用SET,GET方法的地方,我们可以用@property,@synthesize来简单的代替,这时系统会自动给我们生成该变量的set,get方法,@property对应方法的声明部分,@synthesize对应方法的实现部分。
在.h中使用@property进行属性声明后,不需要在.m中再使用@synthesize.@synthesize 的作用:是为属性添加一个实例变量名,或者说别名。同时会为该属性生成 setter/getter 方法。禁止@synthesize:如果某属性已经在某处实现了自己的 setter/getter ,可以使用 @dynamic 来阻止 @synthesize 自动生成新的 setter/getter 覆盖。同时用@property声明的属性使用self.或是_来进行属性的访问