strong、weak、assign何时使用

// strong : 一般对象
// weak : UI控件

//assign: 用于非指针变量。用于基础数据类型 (例如NSInteger)和C数据类型(int, float, double, char)另外还有id

反正记住:前面不需要加 “*” 的就用assign吧,weak 就是相当于assign

实例如下:

@property (weak, nonatomic) IBOutlet UIButton *previousBtn;
@property (weak, nonatomic) IBOutlet UIButton *nextBtn;

@property (weak, nonatomic) IBOutlet UILabel *noLabel;
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak, nonatomic) IBOutlet UILabel *descLabel;

// 记录当前显示的是第几张图片
@property (nonatomic, assign) int index;

// 图片数据集合
@property (nonatomic, strong) NSArray *imageData;

时间: 2024-11-06 16:53:51

strong、weak、assign何时使用的相关文章

ios中strong, weak, assign, copy

copy 和 strong(retain) 区别 1. http://blog.csdn.net/itianyi/article/details/9018567 大部分的时候NSString的属性都是copy,那copy与strong的情况下到底有什么区别呢? 比如: @property (retain,nonatomic) NSString *rStr; @property (copy, nonatomic)   NSString *cStr; - (void)test: { NSMutabl

strong,weak,assign,copy,的用法和区别

stong和weak用来修饰指针的 strong强指针;\强引用,对象,ios5以前叫retain weak弱指针\若饮用,,UI控件,代理,iOS5以前叫weak copy:字符串,复制    深复制\浅复制 @property copy\weak\strong\assign\retain weak(assign):代理\UI控件*strong(retain):其他对象(除代理,UI控件\字符串以外的对象)copy :字符串assign:非对象类型(基本数据类型init\float\BOOL\

iOS--合理定义对象的引用类型strong/weak/assign/copy

在ios中一定要合理使用对象的引用类型: 最佳原则:在ios中任何一个对象只有一个强引用 使用weak的情况: 1.懒加载的方式需要使用weak修饰: 如@property(nonatmic,weak) IBOutlet UILabel *lbl; 备注:所谓的懒加载就是指控件通过IB拖到根视图中,再通过连线的方式与ViewController中的属性对应起来.此种方式就相当于self.view执行了addSubview()方法,即self.view对该控件做了强引用,那么在viewContro

strong,weak,assign的区别

使用assign:对基础数据类型(NSInteger)和C数据类型(int,float,double,char等).使用copy:对NSString:使用retain(引起引用计数加1):对其他NSObject(实例对象)和其子类: 属性关系有两种主要类型:strong和weak,相当于非ARC环境里的retain和assign.只要存在一个强引用,对象就会一直存在,不会被销毁. Objective-C中一直存在循环引用的问题,但在实际应用中很少出现循环引用.对于过去那些使用assign属性的地

ios OC 关键字 copy,strong,weak,assign的区别

一.先介绍 copy.strong.weak 的区别,如代码所示 @property(copy,nonatomic)NSMutableString*aCopyMStr; @property(strong,nonatomic)NSMutableString*strongMStr; @property(weak,nonatomic)NSMutableString*weakMStr; @property(assign,nonatomic)NSMutableString*assignMStr; NSMu

assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic

arc其实并不是所谓的垃圾回收机制,其实arc只是编译器的一种特性,编译器会在编译阶段插入相应的内存管理代码,以实现自动的内存管理,这样就减少了因为程序员的一时疏忽或者项目过大而失误从而造成内存泄露,因为是编译器自动完成的代码插入所以arc的效率要高于垃圾回收机制. 在arc机制下dealloc中会由编译器自动插入释放属性的代码因此也不需要手动调用[super dealloc],当然arc只能管理foundation层的对象对于core foundation层的变量需要程序员手动去释放或者使用桥

对于atomic nonatomic assign retain copy strong weak的简单理解

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作 1)atomic 设置成员变量的@property属性时,atomic是默认值,提供多线程安全 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果.加了atomic后setter函数会变成下面这样: {lock} if (property != newValue) { [property release]; property = [newValue retain]; } {unlock} 2)n

从一个弱引用导致的奔溃 谈 weak assign strong的应用场景【iOS开发教程】

从一个弱引用导致的奔溃 谈 weak assign strong的应用场景 .h中的定义方法一: @property (nonatomic, assign) NSArray *dataSource; 定义方法二 @property (nonatomic, strong) NSArray *dataSource; .m中的实现方法 - (void)viewDidLoad { [super viewDidLoad]; if (YES) { NSArray *array = @[@"1",

关于@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

atomic nonatomic assign retain copy strong weak 介绍

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作.         atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全. 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果.加了atomic,setter函数会变成下面这样:                        {lock}                                if (property != newValue) {