copy的使用
如果是mutable,则copy为新的obj(引用计数为1);
入股市immutable,则retain;
strong 指向某个对象,引用计数+1
assign
weak 指向某个对象,但是不+1
NSString
NSNumber
NSString/NSMutableString
NSArray/NSMutableArray
NSDictionary/NSMutableDictionary
NSSet/NSMutableSet
对变量的修饰符
__strong +1
__weak 不加1,空位nil
__unsafe_unretained 不加1,空的时候就是野指针 可以忽略
apple文档:
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226-CH1-SW11
http://www.jianshu.com/p/4a1d1921284b
相关推荐
IOS中(assign,retain,copy,weak,strong)的区别以及nonatomic的含义 我们在声明@property 属性时,总是要在括号中写上assign、retain、copy、weak、strong中的一个,很多时候,我们仅仅只是按照习惯去写经常写...
@protocol ZSegmentedControlDelegate ...@property (nonatomic, weak)id <ZSegmentedControlDelegate> delegate; //@property (nonatomic, copy) void (^indexChangeBlock)(NSUInteger index);
7. strong 和 weak 属性:在 ARC(Automatic Reference Counting,自动引用计数)时代,retain 和 release 被替换为 strong 和 weak。strong 表示强引用,相当于原来的 retain,会增加对象的引用计数。weak 表示弱...
十一、Strong 与 weak Strong 是一个强引用,对象在内存中存在的时间只要strong引用存在。Weak 是一个弱引用,对象在内存中存在的时间只要weak引用存在,但是对象一旦被释放,weak引用将被置为空。
在Objective-C中,修饰符(如copy、mutableCopy、strong、weak、assign)用于声明变量时的内存管理策略和属性的特性。例如,copy修饰符在复制不可变对象时只进行浅拷贝,它不会开辟新的内存空间,而是使新的指针指向...
retain,strong, copy,weak,assign,readonly, readwrite, unsafe_unretained 下面来分别讲讲各自的作用和区别: retain,计数器加1, (增加一个指向内存的指针) 对应release(计数器-1) setter 方法对参数进行 ...
1. 使用`weak`或`unsafe_unretained`引用代替`strong`引用,以打破循环引用。在ARC下,推荐使用`weak`,因为当对象释放时,`weak`引用会自动设为`nil`,避免野指针问题。 2. 对于代理(delegate)使用`weak`或`...
1. **__strong引用**:默认情况下,Block会创建对捕获对象的强引用,可能导致循环引用,引发内存泄漏。例如,一个Block内部引用了一个对象,而这个对象又持有了Block,两者互相引用,无法释放。 2. **__weak引用**:...
2. 如果你从某个地方获取了一个对象(例如通过retain、copy、或者strong属性),你也就拥有了这个对象。需要在不再需要时对它执行release或者ARC会帮你处理。 3. 如果你不拥有一个对象,就不要释放它。这可能会导致...
11. strong与weak,以及Unsafe_unretained与weak的区别: - strong表示强引用,ARC会自动插入retain。weak表示弱引用,类似于手动管理内存的assign。 - Unsafe_unretained与weak的区别在于,当对象被销毁后,weak...
- **strong、weak、retain、assign、copy等的区别**: - **strong**:强引用,对象的所有权归当前属性所有,会增加对象的引用计数。 - **weak**:弱引用,不增加对象的引用计数,当对象被释放后,指针会被置为nil...
3. **Block**:使用`__weak`修饰`self`来避免循环引用,但在某些场景下可能需要在block内部使用`__strong`来确保对象在block执行期间有效。 六、悬垂指针与野指针 - **悬垂指针**:指向已被释放内存的指针,继续...
最后,strong与weak关键字用于属性的声明,它们分别表示强引用和弱引用。在ARC下,strong告诉编译器自动管理对象的所有权,而weak则不增加引用计数,类似手动管理的assign。另外,_unsafe_unretained与weak类似,但...
3. 引用计数:retain(或strong)用于增加对象的引用计数,assign常用于基本数据类型,可能导致悬垂指针问题。weak不会增加引用计数,当对象释放后,weak指针会自动设为nil。copy分为浅拷贝和深拷贝,浅拷贝仅复制...
2. 使用Block的copy方法:Block在ARC下默认为`__strong`,可以通过`__unsafe_unretained`或`__weak`修饰来弱引用对象。但这并不安全,因为对象可能在Block执行前被释放。更推荐使用`weakSelf`。 3. 使用...
在ARC环境下,指针可以拥有两种类型的角色:strong(强引用)和weak(弱引用)。Strong指针意味着它持有对象的所有权,只要至少有一个strong指针指向一个对象,该对象就不会被销毁。当最后一个strong指针被释放或...
当我们在类接口中声明一个@property,OC编译器会自动生成对应的setter和getter方法,同时处理内存管理(在ARC时代之前是retain、release等,现在是strong、weak等)。例如: ```objc @interface Person : NSObject ...
6. **NSString与copy/strong**:NSString是不可变对象,通常使用strong进行引用。而当需要拷贝一个字符串时,应使用copy关键字以确保新对象独立。 7. **ARC(Automatic Reference Counting)**:ARC是iOS中的自动...