Object-C属性

@property (retain,nonatomic)UILabel titleLabel;

在objective-C中添加属性之前,通常会定义一些方法用于设置和检索类的实例变量的值。这些方法称为访问方法和修改方法(或称为获取方法和设置方法)。

属性的点表示法:

text =  [_titleLabeltext];

text = _titleLabel.text;

就编译器而言,这两条语句是完全相同的,点表示法同样适用于修改方法,如下:

[_titleLabelsetText:@"123"];

_titleLabel.text =@"123";

在声明中,@property关键字后面紧跟着一些可选属性(位于圆括号内),它们进一步定义编译器将如何创建访问方法和修改方法。

(1)retain: 通知编译器向分配给此属性的对象发生一个保留(retain)消息。这将确保属性底层的实例变量在使用过程中不会从内存清除。这是必不可少的,默认行为(assign)需要与垃圾收集一起使用。如果定义的一个属性是对象(与int等原始数据类型相反),则通常在可选属性中指定retain。

为int、float或其他原始数据类型声明属性时,不需要指定任何可选属性。

(2)nonatomic: 将更改访问方法和修改方法的生成方式。在默认情况下,这些方法在创建时会具备另外一些代码,用于帮助你编写多线程程序。这些额外的开销虽然较小,但是对于声明指向用户界面对象的指针没有必要,因此我们通过声明nonatomic来节省一些开销。一般规则,大多数情况下,都将指定nonatomic属性。

(3)assign: 用于int、float等原始数据类型,(此属性为默认值)

iOS5新功能ARC(Automatic Reference Counting),新的关键字: strong,weak,unsafe_unretained

(4)strong:于retain类似,引用计数自动+1,  (owning)

(5)weak: 用weak修饰,一旦内存被释放,指针将都指向nil,可以防止野指针。(non-owning) 如: Delegate, IBOutlet一般用weak

(6)copy: 建立一个索引计数为1的对象,释放旧的对象。此属性仅用于对象类型,它必须实现NSCopying协议, 如: NSString,Block

(7)unsafe_unretained: 与weak有点类似,但是它是unsafe的,一旦内存释放,容易造成野指针闪退, 尽量少用unsafe_unretained

copy与retain的区别:

1)retain是指针拷贝,copy是内容拷贝; retain的set方法是浅复制,copy的set方法是深复制。

2)建立一个索引计数为1的对象,然后释放旧对象,对NSString。它指出,在赋值时使用传入值的一份拷贝。copy工作由copy方法执行,此属性只对那些实现了NSCopying协议的对象类型有效 。

3)释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1。对其他NSObject和其子类。指定retain会在赋值时唤醒传入值的retain消息。此属性只能用于Objective-C对象类型,而不能用于Core Foundation对象。

以上为常用来声明属性,__strong, __weak, __unsafe_unretained, __autoreleasing,常用来声明临时变量

(8)__block: ARC与MRC模式下都可用,可以修饰对象,也可修饰基本数据类型。

(9)__weak: 只能在ARC模式下使用,只能修饰对象,不能修饰基本数据类型(int等)。

(10)__block: 对象可以在block中改变值。

参考:[iPhone 开发基础教程]

http://www.cnblogs.com/langtianya/p/3691035.html

http://blog.sina.com.cn/s/blog_4ac45c260102w3a5.html

http://www.jianshu.com/p/c1d609d1569b

Objective-C 属性相关推荐

  1. Objective-C之MRC、ARC模式下,属性修饰关键字strong、retain、assign、weak的区别和联系...

    平时用strong.retain.assign.weak这几个关键字的时候,也没有过多的在意,下边就MRC.ARC模式下,每个关键字做一下总结.为了简明期间,采用表格的形式进行展示. MRC ARC ...

  2. IOS开发中的变量、方法、属性

    转自 :http://www.0jl.com/?p=509 1.在Objective语言中可以声明实例变量(Instance Variables). 变量有四种访问范围: 私有(private): 在 ...

  3. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

  4. 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】

    @property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...

  5. Objective C ARC 使用及原理

    Objective C ARC 使用及原理 手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档 ...

  6. IOS学习笔记——Objective-c基础(一)

    2019独角兽企业重金招聘Python工程师标准>>> 最近自学ios,ios的支持语言是Objective-c,所以要学习ios就需要先学习Objective-c语言.当掌握了Ob ...

  7. Swift中文教程(十) 属性

    属性是描述特定类.结构或者枚举的值.存储属性作为实例的一部分存储常量与变量的值,而计算属性计算他们的值(不只是存储).计算属性存在于类.结构与枚举中.存储属性仅仅只在类与结构中. 属性通常与特定类型实 ...

  8. Objective C运行时(runtime)技术总结,好强大的runtime

    前言:          Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表.属性列表.变量列表,修改方法.属性,增加方法,属性等等,本文对相 ...

  9. 闲鱼是怎么让二手属性抽取准确率达到95%+的?

    闲鱼是怎么让二手属性抽取准确率达到95%+的? 先上效果 图1 - 二手属性抽取算法效果Demo(1) 背景 闲鱼作为一款C2X的app,站在商品发布的角度,闲鱼商品相对于淘宝商品的特点有: 轻发布导 ...

  10. Qt for iOS,Qt 与Objective C混合编程

    因为我写了一系列Qt的博文以及一本书<Qt on Android核心编程>,最近有好几个使用Qt的朋友问起 Qt for iOS 的事情,因为我在这方面的经验特别少,写不出系统的文章来,非 ...

最新文章

  1. es日期format_elasticsearch存储日期格式字段
  2. Linux 下的动态链接库问题
  3. 直流(DC)跟交流射频(RF)的电场构成
  4. (总结)Linux的/etc/services文件简析
  5. 设计高效sql一般经验谈
  6. 腾讯大数据高级产品总监洪桃李:决胜未来的4大关键能力
  7. [Leedcode][JAVA][按摩师][动态规划]
  8. html css 表头,css固定表格表头(各浏览器通用)
  9. 三周第二次课(12月26)
  10. 【nginx】【转】Nginx核心进程模型
  11. Window2003 IIS+MySQL+PHP+Zend环境配置
  12. RS485接口的EMC设计方案
  13. Java学习笔记:2021年12月31日下午-2022年1月1日上午
  14. Ps(Adobephoto shop)当中布尔运算的使用方法
  15. win10办公局域网共享文件夹方法
  16. STM32CubeIDE+FREERTOS踩坑记录
  17. vue中EventBus的实现原理
  18. 汇编语言(王爽第三版)实验一
  19. 细菌大盘点(二) | 葡萄球菌、沙门氏菌、弯曲杆菌
  20. Androi Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'

热门文章

  1. Python数据分析及可视化的基本环境
  2. oracle9i rac for aix,oracle 11gR2 rac for aix 第二个节点运行root.sh不成功问题处理
  3. 坚持30天打卡赠书新玩法!
  4. 7代服务器cpu型号,7代intel 全部型号?
  5. Win10提示“为了对电脑进行保护,已经阻止此应用”怎么处理?
  6. JavaScript 数据结构与算法(队列)
  7. Word文字报告自动与Excel数据同步更新
  8. HTML5游戏开发实战
  9. 苹果侧边滑动返回_iPhone X侧边按键使用教程,满满都是黑科技啊
  10. 仿QQ登陆客户端登陆界面