美文网首页
assign需要注意的用法

assign需要注意的用法

作者: hope7th | 来源:发表于2016-03-11 03:04 被阅读1136次

    类:是一种结构,它表示对象的类型,对象引用类来获取和本身有关的各种信息,特别是运行什么代码来处理每种操作。

    对象:是一种结构,它包含值和指向其类的隐藏指针。

    实例:对象的另一种称呼。

    消息:是对象可以执行的操作,用于通知对象去做什么。对象接收消息后,将查询对应的类,以便查找正确的代码来运行。

    方法:是为响应消息而运行的代码,根据对象的类,消息可以调用不同的方法。

    接口:是对象的类应该提供特殊的特性的描述。

    什么是property?

    property是一种代码生成机制,能够生成不同类型的getter/setter函数,特别是如果你想要用点(.)操作符号来存取变量的话,你就能必须使用property。

    如何使用?

    用法如:@property (attribute1,attribute2) float value;

    这些attribute包括:

    readonly表示这个属性是只读的,就是只生成getter方法,不会生成setter方法。

    readwrite可读可写(默认)设置可访问级别。

    assign:简单赋值,不更改索引计数

    copy:建立一个索引数为1的对象,然后释放旧对象

    retain:释放(release)旧对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

    nonatomicnonatomic非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,

    则默认是两个访问方法都为原子型事务访问。

    前两个只是简单的设定变量的可读写性。

    详细解释:copy其实是建立了一个相同的对象,而retain不是:

    比如一个NSString对象,地址为0x1111,内容为@"STR" ,copy到另外一个NSString之后,地址为0x2222,内容相同,新的对象retain为1,旧有对象没有变化。

    旧有对象没有变化。

    retain 到另一个NSString之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1,也就是说,retain是指针拷贝,copy是内容拷贝。在拷贝之前,都会释放旧的对象。

    assign:简单赋值,不更改索引计数(Reference Counting)。

    copy:建立一个索引计数为1的对象,然后释放旧对象

    retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的输入对象的索引计数为1

    使用assign:对基础数据类型(NSInteger)和C数据类型(int ,float,double,char等)

    使用copy:对NSString

    使用retain:对其他NSObject和其子类。

    阿里巴巴面试问到assign能否用NSObject类,我一直想它的指针是怎么指的,一时懵了。

    相关文章

      网友评论

          本文标题:assign需要注意的用法

          本文链接:https://www.haomeiwen.com/subject/jwntlttx.html