[Objective-C] assign/retain/copy 详解

转载 2015年07月07日 08:22:05

转自:http://www.88cto.com/996655/article/details/21674.html


注意:assign 是默认值


1.assign:这个属性一般用来处理基础类型,比如int、float等等,如果你声明的属性是基础类型的话,assign是默认的,你可以不加这个属性!(一个常见的例外是delegate的set方法通常设为assign,这是为了避免循环引用造成的引用计数无法归0,然后内存泄漏——考虑一个view的delegate为该view所在controller的情况)

2.retain: 释放旧的对象 将旧对象的值赋予输入对象 并将输入对象的索引计数+1 ,主要应用与NSObject与其子类中.具体实现如下:Book类创建一个对象

【yasi】释放旧的对象_book,将输入对象book的值赋予旧的对象_book,并将输入对象book的索引计数+1 ,主要应用于NSObject与其子类中

- (void)setBook:(Book *)book{ 
    if (_book != book) {
        [_book release]; // 释放掉旧的_book不用担心开始_book = nil时候,释放 [nil release]在OC中不算错误没有空指针概念
       _book = [book retain];     //  book赋值给新的_book
    }
}

- (Book*)book{
    return _book;
}

3.copy:这个会自动生成你赋值对象的克隆,相当于在内存中新生成了该对象的副本,这样一来,改变赋值对象就不会改变你声明的这个成员变量了一般推荐的做法是NSString类型用copy

相关文章推荐

Objective-C ---- retain/copy/assign/等语义修饰理解

【atomic/nonatomic】 (1)atomic[默认属性]:OC使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhon...

Objective-c中copy,retain,assign,readonly,read write,nonatomic的区别

nonatomic:非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。 (atomic是Objc使用的一种线程保护技术,基本...
  • yqmfly
  • yqmfly
  • 2012年06月18日 14:57
  • 799

Objective-C中的@property和@synthesize用法及参数(readwrite/readonly)(assign/retain/copy)(atomicity/nonatomic)

用@property,@synthesize来代替get,set方法,用起来很简单,可以省掉很多的代码量,当需要用SET,GET方法的地方,我们可以用@property,@synthesize来简单的...

Objective-C学习——copy, retain,assign,readonly,readwrite,strong,weak,nonatomic,unsafe_unretained

说明:看了很多书上的描述,对retain assign和copy的都是草草描述,没有谈及本质,但是retain assign和copy却是内存管理的重要内容,所以自己总结了下,本文涉及到了Object...
  • yi412
  • yi412
  • 2016年05月20日 11:31
  • 469

Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)

assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。   assign:...

Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)

assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。   a...

Objective-C的@property 详解(retain是指针拷贝,copy是内容拷贝,★firecat推荐★)

文章来源:http://www.cnblogs.com/andyque/archive/2011/08/03/2125728.html 之前很多网友对我翻译的教程中的Property的使用感到有些...

Objective-C中copy 、retain以及ARC中新加入的strong、weak关键字的含义

copy: 创建一个引用计数为1的对象,然后释放旧的对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的引用计数为 1 Copy其实是建立了一个相同的对象,而retain不...

Objective-C中类属性的 copy, tetain, assign , readonly , readwrite, nonatomic区别

nonatomic:非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。 (atomic是Objc使用的一种线程保护技术,基本上来...

ios_assign,retain和copy详解

  • 2013年04月18日 09:42
  • 256KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Objective-C] assign/retain/copy 详解
举报原因:
原因补充:

(最多只允许输入30个字)