打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
XCODE 4.2 中的@synthesize, @property

XCODE 4.2 中的@synthesize, @property

说明:"@property"、"@synthesize"和"release"之间的关系。

在***ViewController.h中在建立"标签"控件后,使用了@property(nonatomic,retain) UILabel*label;声明控件的属性,并且加入在前面@interface中指定的相同UILabel控件对象,所以在**ViewController.m开始时必须添加@synthesize label;

告诉编译器去合成控件的存储器的方法,为程序自动生成Label标签控件的设置函数(setters)和获得函数(getter)。最后在模板程序的默认(void)dealloc的释放方法中使用[labelrelease];把label在程序中释放。这样就完整地完成了程序中一个控件的生命周期了。


在ViewController.h头文件代码内的@property (nonatomic, retain)UILabel中,nonatomic使用单线程机制减少系统资源使用,将更改方法和修改方法生成在Property(属性),retain(保留)属性的可选项表明向属性的对象发送一个保留消息。

nonatomic它要与@synthesize一起使用才有意义。atomic的意思就是setter/getter这个函数是一个原语操作。如果有多个线程同时调用setter的话,不会出现某一个线程执行setter全部语句之前,另一个线程开始执行setter情况,相当于函数头尾加了锁一样。nonatomic不保证setter/getter的原语行,所以你可能会取到不完整的东西。比如setter函数里面改变两个成员变量,如果你用nonatomic的话,getter可能会取到只更改了其中一个变量时候的状态

=============================================================

可以比较简单解释如下:

@property - declares a property

@property-声明属性

@synthesize - creates getter and setter methods for a property

@synthesize - 为一个属性创建getter和setter方法

nonatomic,retain

这个两个参数为属性的可选附加参数。

(atomic、nonatomic)属性用于多线程编程。在多线程环境下设置为atomic可以保证数据读取的一致性(因为,它将保证数据仅仅被一个线程独占。也就是说一个线程进行写操作时,将锁定该属性,不允许其他的线程进行写操作。)由于该操作会对数据进行锁操作,故会消耗较多的资源。所以在不需要进行多线程操作时建议将该属性设置为nonatomic,设置为该参数时程序在任何情况都不会锁定该属性。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
@property跟成员变量区别
《招聘一个靠谱的iOS》面试题参考答案(上)
Objective-C入门教程03:属性(@property和@synthesize)
代码戒律:Objective
52个有效方法(6) - 理解“属性”这一概念
IOS之学习笔记五(合成存取方法)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服