strong vs copy】的更多相关文章

面试过程中经常被问到ARC中Strong.Copy的区别是什么.普通的回答是:一样.文艺(正确)的回答是:分情况(我擦!WQY#$&Y**%OWEUR) 可以先参考这篇文章http://www.cnblogs.com/lihaiyin/p/4647426.html 问题一:到底用Copy还是Strong 1. 把不可变对象写成Copy:   如果把不可变对象赋值给此属性,内存中其实就是retain了一下. 如果把可变对象赋值给此属性,会生成新的不可变对象,避免值的变化 2. 把不可变对象写成St…
时不时会有点迷惑属性修饰符retain.strong.copy三者之间的区别,还是把测试过程记录下来好一点! 1.属性修饰符结论 2.给retain.strong.copy修饰的字符串属性赋值指针变化测试例子 3.字符串调用copy.mutableCopy方法给字符串赋值指针变化例子 一.属性修饰符retain.strong.copy修饰字符串测试 先看代码,创建一个Person类,定义属性 #import <Foundation/Foundation.h> @interface Person…
问题描述 在定义一个类的property时候,为property选择strong还是copy特别注意和研究明白的,如果property是NSString或者NSArray及其子类的时候,最好选择使用copy属性修饰.为什么呢?这是为了防止赋值给它的是可变的数据,如果可变的数据发生了变化,那么该property也会发生变化. 代码示例 还是结合代码来说明这个情况 @interface Person : NSObject @property (strong, nonatomic) NSArray *…
@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. NSObject对象的@property属性时,默认为atomic,提供多线程安全. 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果.加了atomic,setter函数会变成下面这样: NSLock *_lock = [[NSLock alloc]ini…
一.前言           在这里,我通过实例去介绍strong和copy的区别(%p打印出来对象的地址)  ViewController.h            #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property(nonatomic,strong) NSString *name; @end ViewController.m - (void)viewDidLoad { [super v…
一.@property 这个关键词的唯一作用就是声明getter.setter方法接口. 二.@synthesize 实现setter.getter方法,找不到实例变量则主动创建一个. 三.nonatomic与atomic        atomic原子操作,提供多线程安全,setter方法会发生变化:基本来讲是防止在写未完成的时候被另外一个线程读取,造成数据错误,但是这种操作的弊端就是非常消耗内存资源,苹果手机的内存资源相当宝贵,所以没有使用多线程间的通讯编程,用nonatomic是一个不错的…
又是一个老生常谈的话题,可是貌似这个问题,好多ios开发工程师并不能理解透彻,所以简单记录分析一下深复制与浅复制的原理以及strong,copy修饰符的原理和使用.   一.深复制与浅复制       1.区分深复制与浅复制其实很简单,最直观的一点就是是否创建了新的对象(或者说副本).(这里说的是内容是否被copy).浅复制只是引用计数加一,没有创建新的对象:深复制直接把内容复制,创建了新的对象.     2.不同情况下的copy和mutablecopy是否会创建新的对象         1>深…
深拷贝和浅拷贝 深拷贝和浅拷贝主要是对类类型而言的,浅拷贝就是指针拷贝,深拷贝是对象拷贝. property的strong和copy 在接触iOS程序时经常会看到程序某些类类型属性被strong修饰,某些被copy修饰,刚开始接触时有些疑惑,后来不知咋地形成了这样的观念,对于mutable类型,用copy修饰,对于immutable类型,用strong修饰,现在看来这个大大地错了. 创建属性是一件机械化的工作:对于一般的属性,你会将它们声明为 nonatomic.默认情况下,对象属性是stron…
关键词assign.strong.copy.weak.unsafe_unretained 影响: 是否开辟新的内存 是否有引用计数增加 strong 指向并拥有该对象.其修饰的对象引用计数会 +1,该对象只要引用计数不为 0 就不会销毁,置为 nil 可以销毁它.一般用于修饰对象类型.字符串.集合类的可变版本NSMutable. // .h 文件 @property (nonatomic, strong) NSMutableArray * nArr; // .m 文件 { NSMutableAr…
strong   对于普通的OC对象都是使用strong copy     对于 NSString,Block weak    用于OC对象,1.当出现循环强引用的时候,必须要保证一端是weak, 2.视图中的代理属性都是weak 3.视图中的子控件属性一般都是weak,注意也可以使用strong assign  用于非OC对象.…