strong ,weak,copy关键字使用,及weak跟assign区别

1strong和weak都是针对对象

2strong持有对象的所有权

3weak不持有对象的所有权

什么时候使用weak

1.委托 为了规避循环引用 使用weak限定delegate指针

2.SB拖拽控件 可以使用weak关键字限定属性

与assign的区别

1.weak只能修饰对象指针,assign可以修饰任意类型指针

2.weak指针指向的对象被释放 weak指针自动置为nil,assign不会自动置为nil

copy关键字如何使用

1.block 在栈区分配内存(系统管理其内存) 拷贝到堆区 方便程序员可管理其内存

2.NSString NSArray NSDictionary存在对应的可变类型  可变类型通过copy得到的是不可变的副本

原文地址:https://www.cnblogs.com/WellLin/p/12670464.html

时间: 2024-08-26 15:07:50

strong ,weak,copy关键字使用,及weak跟assign区别的相关文章

iOS strong,copy,retain,weak,assign的区别,以及各自的用法

1:ARC环境下,strong代替retain.weak代替assign 2:weak的作用:在ARC环境下,所有指向这个对象的weak指针都将被置为nil.这个T特性很有用,相信很多开发者都被指针指向已释放的对象所造成的EXC_BAD_ACCESS困扰过,使用ARC以后,不论是strong还是weak类型的指针,都不会再指向一个已经销毁的对象,从根本上解决了意外释放导致的crash. 3:assign的作用:简单赋值,不改变引用计数,对基础数据类型 (例如NSInteger,CGFloat)和

18-NSString之Strong和copy

NSString属性什么时候用copy,什么时候用strong? 2015-05-12  iOS开发 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子. 示例   我们定义一个类,并为其声明两个字符串属性,如下所示: @interface TestStringClass () @property (nonatomic, strong) NS

【iOS面试系列-1】iOS中@property 后assign,copy,retain,weak,strong的意义与区别(必考-必须详细掌握)

来源:网络 assign: 普通(简单)赋值,一般常用于基本数据类型,常见委托设计模式,一次来防止循环引用.不更改索引计数(Reference Counting). 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等) retain:保留计数,获得到了对象的所有权,引用计数在原有基础上+1.释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 .我们给那块内存设一个引用计数,当内存被分配并且赋值给a时,引用

属性设置@property之retain,assign,weak,strong,copy

1.assign assign只是简单赋值,不更改索引计数,适用于基础数据类型 (例如NSInteger,CGFloat)和C数据类型(int, float, double, char, 等) 2.copy copy用来建立一个索引计数为1的对象,然后释放旧对象, 常用语NSString ,指在赋值时使用传入值的一份拷贝. 3.retain retain用来释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 对其他NSObject和其子类,对参数进行release旧值,再ret

关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】

@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. NSObject对象的@property属性时,默认为atomic,提供多线程安全. 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果.加了atomic,setter函数会变成下面这样: NSLock *_lock = [[NSLock alloc]ini

iOS中ARC的weak,strong,copy,assign使用场景

copy : NSString\NSMutableString\block weak : 代理\UI控件 strong : 其他OC对象 assign : 基本数据类型(int\float)\枚举\结构体

iOS 关键词assign、strong、copy、weak、unsafe_unretained

关键词assign.strong.copy.weak.unsafe_unretained 影响: 是否开辟新的内存 是否有引用计数增加 strong 指向并拥有该对象.其修饰的对象引用计数会 +1,该对象只要引用计数不为 0 就不会销毁,置为 nil 可以销毁它.一般用于修饰对象类型.字符串.集合类的可变版本NSMutable. // .h 文件 @property (nonatomic, strong) NSMutableArray * nArr; // .m 文件 { NSMutableAr

retain strong 和 copy 讨论,有建议的的童鞋请留言

总结下我的理解: strong weak是ARC引入的,strong相当于retain,但是对于有的类型,例如NSString,则使用strong相当于使用copy 这样直接用strong就可以直接处理retain和strong的情况了. weak相当于assign,但是比后者多一点:对象被干掉时会将weak引用设为nil,而对nil发送消息都不会导致崩溃 否则weak引用为野指针,会出现问题 这里说strong 有copy的功能是错误的哦.实验例子 @interface AppDelegate

retain、strong和copy测试

时不时会有点迷惑retain.strong.copy三者之间的区别,还是记录下来好一点,先看代码: 创建一个类,定义属性 #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, retain) NSString *strRetain; @property (nonatomic, strong) NSString *strStrong; @property (nonatomic, c