您的位置:首页 > 运维架构

setter,getter,@property,@synthesize

2016-04-29 13:28 232 查看
以前都是直接用,我会用到@synthesize,@property,setter ,getter方法,基本自给都会用到,不过说真的,自己用的时候真的是朦朦胧胧,反正都是用,这点简单的基础知识,自己无需那么深究,今天有空了,我得好好深究一下,看了文档,也看了看别人写的技术博客,自己在这也是稍微总结下,是这样的,setter方法,顾名思义,就是设置方法,那么设置方法是干嘛的呢?其实就是我改变它,我可以设置它嘛,根据我自己的需要,想怎么设置就怎么设置它。而getter呢,获得!对,就是获得,我可以设置一个变量,然后获得它,然后拿到这个获得到的值我再做自己想做的事。

@property (readonly) //表示只创建get方法,不创建set方法,

atomic //原子操作,有这个参数时,在这个线程运行结束之前,不允许其他线程使用我已使用的资源,正常情况下,线程是可以使用同一个资源,并且多个线程间可以交替的运行

noautomic //非原子操作,不必原子操作,默认是原子操作的,因此有时会增加这个参数,

@property (getter = OtherName) NSInteger name;//修改默认的getter名字,name为OtherName.使用的时候我们可以同时使用这两个名字都可以。

@property (setter=settttStr:)NSString *myStr;//setter方法名字就是括号中的那个,

在之前,我们用这个变量,或者需要对这个变量操作的时候我们是需要写setter和getter方法的,写一个变量,就得至少写两个方法,先得声明,再实现,真的是太繁琐了,所以后来有了@property和@synthesize,这两个单词真的是解决了我们很大的问题,一般来说,一个@property就解决了所有的问题,有些开发者还是习惯在实现文件中加上@synthesize,习惯好,无可厚非,本人看来就是一个@property爸所有事情解决了也未尝不是好事,

在.h中我们移除了getter方法和setter方法。代之以"@property"开头的语句。

在.m中,我们删除了所有的setter/getter方法,代之以两个"@synthesize"开头的语句。(可以忽略)
这和前面的代码是一模一样的。 回想一下,写一个getter也是很简单的:你只需要知道将返回哪个变量以及变量的类型就行了,这样就很容易写出代码了。对于setter,你需要知道的是:正在对哪个变量赋值,以及它的类型,以及是否是简单赋值(例如int类型的属性)或者是否需要进行retain/release(例如NSString属性)。
然而,现在我们只需要一个(两个也可以)"@"语句就行了:

@property(nonatomic, retain)NSString *text;
翻译过来就是“我有一个NSString类型的成员变量 'text'。我需要一对getter/setter方法(使用retain/release)”。
@property(nonatomic, assign) intvalue;
翻译过来就是“我有一个int型成员变量 'value'。我需要一对使用简单赋值而不是retain/release的getter/setter方法”。

@synthesize text;
翻译过来就是“请为 'text'自动生成getter/setter方法代码”。

@synthesize value;
翻译过来就是“请为 'value'自动生成getter/setter方法代码”。
注意,我们仍然需要在dealloc方法中release对象。O-C显然还无法自动帮我们做这些事情。(iOS6之后不需要我们来管理内存了,使用ARC,系统会自动帮我们解决这个内存问题).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: