oc46--nonatomic, retain】的更多相关文章

strong weak strong与weak是由ARC新引入的对象变量属性 ARC引入了新的对象的新生命周期限定,即零弱引用.如果零弱引用指向的对象被deallocated的话,零弱引用的对象会被自动设置为nil. @property(strong) MyClass *myObject; 相当于@property(retain) MyClass *myObject; @property(weak) MyOtherClass *delegate; 相当于@property(assign) MyO…
http://my.oschina.net/u/728866/blog/90798 property,可以提供的功能有:提供成员变量的访问方法的声明.控制成员变量的访问权限.控制多线程时成员变量的访问环境 ). property不但可以在interface,在协议protocol .和类别category中也可以使用. synthesize的理解是:实现property所声明的方法的定义. 其实说直白就像是:property声明了一些成员变量的访问方法 ,synthesize则定义了由prope…
写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name 写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name 答: // retain - (void)setName:(NSString *)str { [str retain]; [_name release]; _name = str; } // copy - (void)setName:(NSString…
转自:http://yuanshoupeng2005.blog.163.com/blog/static/68235027201235113952886/ http://baike.baidu.com/view/5028218.htm retain和copy的区别 原来简单解释过属性定义(Property) ,并且提起了简单的retain,copy,assign的区别.那究竟是有什么区别呢? assign就不用说了,因为基本上是为简单数据类型准备的,而不是NS对象们. Retain vs. Cop…
 readwrite 是可读可写特性;需要生成getter方法和setter方法时  readonly 是只读特性 只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变  assign 是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;  retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;  copy 表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时.  nonatomic…
IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic.                     @synthesize.@property.@dynamic #synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 . @implementation 关键字,表明类的实现 @end 结束 self 关键字 :类似于java中的t…
浅谈iOS内存管理机制 alloc,retain,copy,release,autorelease 1)使用@property配合@synthesize可以让编译器自动实现getter/setter方法,使用的时候也很方便,可以直接使用“对象.属性”的方法调用;如果我们想要”对象.方法“的方式来调用一个方法并获取到方法的返回值,那就需要使用@property配合@dynamic了 使用@dynamic关键字是告诉编译器由我们自己来实现访问方法.如果使用的是@synthesize,那么这个工作编译…
assign:指定setter方法用简单的赋值,这是默认操作.你可以对标量类型(如int)使用这个属性.你可以想象一个float,它不是一个对象,所以它不能retain.copy.assign指定setter方法用简单的赋值,这是默认操作.   retain:指定retain应该在后面的对象上调用,前一个值发送一条release消息.你可以想象一个NSString实例,它是一个对象,而且你可能想要retain它.retain释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 ,…
strong,weak, retain, assign的区别 strong与weak是由ARC新引入的对象变量属性 xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的.xcode 4.3(ios5和以上版本)之后就有了ARC,并且开始使用 strong与weak assign: 用于非指针变量.用于 基础数据类型 (例如NSInteger)和C数据类型(int, float, double, char, 等),另外还有id 如:…
iOS中assign.copy .retain等关键字的含义  转自:http://my.oschina.net/majiage/blog/267409 assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立了一个相同的对象,而retain不是:比如一个NSString对象,地址为0×1111,内容为@”STR”Copy到另外一个NSString之 后,地…
时不时会有点迷惑属性修饰符retain.strong.copy三者之间的区别,还是把测试过程记录下来好一点! 1.属性修饰符结论 2.给retain.strong.copy修饰的字符串属性赋值指针变化测试例子 3.字符串调用copy.mutableCopy方法给字符串赋值指针变化例子 一.属性修饰符retain.strong.copy修饰字符串测试 先看代码,创建一个Person类,定义属性 #import <Foundation/Foundation.h> @interface Person…
@interface Person : NSObject //retian : release 旧值,retain 新值 @property(nonatomic,retain) Book *book; //copy:release旧值,copy 新值 @property(nonatomic,retain) NSString *name; /* 在非ARC的情况下: 1.copy release 旧值,copy新值 2.assign 直接复值 3retaion release旧值,retain新值…
http://blog.csdn.net/xdrt81y/article/details/24331103   口诀: 1浅3深   NSArray copy (浅) 返回NSArray NSArray  mutableCopy(深) NSMutableArray NSMutableArray copy(深) 返回 NSArray NSMutableArray mutableCopy 返回 NSMutableArray   阅读本文之前首先了解copy与retain的区别,如果有不正确的地方望大…
2个对象互相有着引用,A中有B,B中有A. // 对于循环retain的情况,对象不能够释放,此时只能让一方使用assign一方使用retain,retain用于对象assign用于基本类型,assign时对cat的引用不会使cat对象计数器加1 Cat.h #import <Foundation/Foundation.h> @class Girl; @interface Cat : NSObject @property (nonatomic,copy)NSString *name; @pro…
iOS retain.strong.weak.assign strong与weak是由ARC新引入的对象变量属性xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的.xcode 4.3(ios5和以上版本)之后就有了ARC,并且开始使用 strong与weak assign: 用于非指针变量.用于 基础数据类型 (例如NSInteger)和C数据类型(int, float, double, char, 等),另外还有id 如: @p…
1.@class 使用场景:对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类: 可以看出Person和Card互相引用,此时如果使用#import编译报错!因此当使用@class在两个类中相互声明,编译不会报错! 用法:使用 @class 类名; 就可以引用一个类,说明一下它是一个类 @class和#import的区别: #import方式会包含被引用类的所有信息,包括被引用类的变量和方法:@class方式只是告诉编译器在A.h文件中 B *b 只是类的声明,具体这个类里有什么信息,这…
copy retain assign的差别在于对象属性的set方法 NSString 与 NSMutableString NSString是不可变字符串对象,这句话的意思,结合代码: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"Shaw"; NSString *str1 = @"Roo…
原文地址:http://tanqisen.github.io/blog/2013/04/19/gcd-block-cycle-retain/ 使用指南:http://blog.csdn.net/nicktang/article/details/6906352 Block简介 Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地…
iOS中assign.copy .retain等关键字的含义 assign: 简单赋值,不更改索引计数 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立了一个相同的对象,而retain不是: 比如一个NSString对象,地址为0×1111,内容为@”STR” Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象retain为1, 旧有对象没有变化 retai…
一..h和.m文件的变化说明 1.对于.h头文件,主要是将属性定义由retain变为strong @property (retain, nonatomic) 变为 @property (strong, nonatomic) 2.在ARC之前,我们经常在.m中使用分类拓展来增加私有的property @interface MJViewController () @property (nonatomic, retain) NSArray *data; @end 这 样做主要是简化实例对象的手动内存管…
retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于C++的极其非人道的内存管理,Objective-C提出了一些机制来减少内存管理的难度. 比如:内存计数. 在 Objective-C中,凡是继承自NSObject的类都提供了两种方法,retain和release.当我们调用一个对象的retain时,这个 对象的内存计数加1,反之,当我们调用rel…
之前学习生活中,知道NSString的属性要用copy而不用retain,可是不知道为啥,这两天我研究了一下,然后最终明确了. 详细原因是由于用copy比用retain安全,当是NSString的时候,其有用copy和retain都行,当用NSMutableString,那么就要用copy,NSMutableString的值不会被改动,而用retain的时候,NSMutableString的值会被改动,详细情况,能够看以下的代码: #import <Foundation/Foundation.h…
@interface User : NSObject @property (nonatomic,retain) NSString* tRetain; @property (nonatomic,assign) NSString* tAssign; @property (nonatomic,copy) NSString* tcopy; @end 类User有个属性tRetain, 只是测试就用NSString类型了(此类型一般用copy, 因为可能是个NSMutableString,不希望在赋值后被…
遍历构造器的内存管理 a.遍历构造器方法内部使用autorelease释放对象 b.通过遍历构造器生成的对象.不用释放. 内存的管理总结 1.想占用某个对象的时候,要让它的引用计数器+1(retain操作) 2.当不想再占用某个对象的时候,要让它的引用计数器-1(release操作) 3.谁alloc谁release,遍历构造器使用autorelease 另:当一个属性遵循了协议的时候(该属性就是代理),这时使用内存组的assign修饰. 多态:父类指针 指向 子类对象 没有继承就没有多态 父类…
@interfaceAppDelegate() { NSObject * obj_; } @property(retain) NSObject * obj;// 默认是atomic //@property(nonatomic, retain) NSObject * obj; @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:…
@property (nonatomic,retain) NSString * name; - (void)setName:(NSString*)name { [name retain];   把传进来的对象引用计数加一 [_name  release]; 把_name以前的对象release一次 _name = name;    把name的对象地址给_name  这时name 和_name共同对象的引用为2 } @property (nonatomic ,assign) NSString *…
我们为什么须要内存管理?当使用内存达到40M和45M时候会发出警告,假设不处理,占用内存达到120M时直接强制关闭程序. 所以出现闪退除了是程序出现逻辑错误,还有可能是内存使用过大. (1)创建一个对象的过程:先分配内存空间存储对象:初始化成员变量:返回对象的指针. (2)对象在创建时,内部会自己主动创建一个引用计数器retainCount,当retainCount=0时,系统会回收当前对象,retainCount是唯一推断标记.release会-1.retain会+1,retain后返回的是自…
内存管理 retain和release简单使用 #import "Student.h" @implementation Student @synthesize age = _age; // 在xcode4.5环境下可以省略 - (void)dealloc { NSLog(@"%@被销毁了", self); [super dealloc]; // 一定要调用super的dealloc方法,而且最好放在最后面调用 } @end #import <Foundatio…
1. 接触过C,那么假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给 (assign)了b.此时a和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如 果a释放了,那么b在使用这块内存的时候会引起程序crash掉.2. 了解到1中assign的问题,那么如何解决?最简单的一个方法就是使用引用计数(reference counting),还是上面的那个例子,我们给那块…
Block简介 Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地方,错误的内存管理 要么导致return cycle内存泄漏要么内存被提前释放导致crash. Block的使用很像函数指针,不过与函数最大的不同是:Block可以访问函数以外.词法作用域以内的外部变量的值.换句话说,Block不仅 实现函数的功能,还能携带函…