![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础
文章平均质量分 78
漫漫人生的blog
理想是人生的太阳。
展开
-
iOS开发 -- 属性用copy、strong修饰的区别
Copy,Strong的区别需要了解点内存管理的知识,Strong是ARC下引入的修饰,相当于手动管理内存(MRC)下的retain,在相关代码下,常常看到有的人用copy修饰NSString,NSArray,NSDictionary..等存在可变与不可变之分的对象,常常会用copy,而不是strong,下面代码来解释一下strong与copy的区别:原创 2016-09-14 16:44:37 · 809 阅读 · 0 评论 -
使用NSArray时,到底用strong修饰还是copy修饰
iOS开发人员都知道,使用NSMutableArray时是用strong修饰,例如:@property (nonatomic,strong) NSMutableArray * mutableArray; 那么,NSArray呢?好像很多人都直接使用strong,而且网上还有很多人说除了NSString用copy,其他对象类型都用strong。问题来了:当用strong修饰NSArray的时候,如果遇到用可变数组给它赋值怎么办?会导致不易察觉的问题原创 2016-09-14 16:55:14 · 5605 阅读 · 0 评论 -
[NSMutableArray array] 和 [[NSMutableArray alloc] init]的区别
[NSMutableArray array] 和 [[NSMutableArray alloc] init]的区别原创 2016-09-14 17:21:34 · 4467 阅读 · 0 评论 -
iOS中代理属性为什么要用Weak修饰?
代理设计模式,在iOS开发过程中,是一个非常常见的设计模式,可以说用的范围非常广泛,而对初学者来讲,常常对代理的属性修饰用weak存在疑惑,因此下面就解释一下其中非常简单的道理.转载 2016-09-14 17:40:18 · 1039 阅读 · 0 评论 -
控件的strong和weak问题
在OC中,如果对象没有强引用,就会被自动释放,那么为什么控件还可以设为weak?原创 2016-09-14 17:44:00 · 323 阅读 · 0 评论 -
iOS容易造成循环引用的三种场景
ARC已经出来很久了,自动释放内存的确很方便,但是并非绝对安全绝对不会产生内存泄露。导致iOS对象无法按预期释放的一个无形杀手是——循环引用。循环引用可以简单理解为A引用了B,而B又引用了A,双方都同时保持对方的一个引用,导致任何时候引用计数都不为0,始终无法释放。若当前对象是一个ViewController,则在dismiss或者pop之后其dealloc无法被调用,在频繁的push或者present之后内存暴增,然后APP就duang地挂了。下面列举我们变成中比较容易碰到的三种循环引用的情形。转载 2016-09-15 08:54:57 · 229 阅读 · 0 评论 -
block为什么用copy以及如何解决循环引用
在完成项目期间,不可避免的会使用到block,因为block有着比delegate和notification可读性更高,而且看起来代码也会很简洁。于是在目前的项目中大量的使用block。 但是在开发的时候,有时候由于疏忽大意或者一些其他的原因,导致了使用block时造成了循环引用从而导致了内存泄露。原创 2016-09-15 08:43:22 · 335 阅读 · 0 评论 -
关于iOS中的strong,weak,assign,copy,retain等关键字的总结
1.如果你写了@synthesizeabc=_abc;的话,系统自动帮你声明了一个_abc的实例变量。2.nonatomic:非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。不同关键字的使用场景:使用assign:对基础数据类型(NSInteger)和C数据类型(int,float,do转载 2016-09-15 15:54:57 · 216 阅读 · 0 评论