copy : NSString\NSMutableString\block weak : 代理\UI控件 strong : 其他OC对象 assign : 基本数据类型(int\float)\枚举\结构体 时间: 2024-10-13 20:21:28
readonly, readwrite:是控制属性的访问权限,readonly只生成getter方法,其他类是无法修改其值的.readwrite是会同时生成getter和setter方法,其他类可以修改其值. assign, retain, weak, strong, copy,unsafe_unretained:在non-ARC中,assign和retain是一组,assign的对象属性引用计数不变,而retain会被+1.对应的在ARC中,weak和strong是一组,weak的对象属性引用
工程配置arc方案: 1,直接在targets->build phases中修改compiler Flags,是否支持arc.添加:-fobjc-arc,就可以让旧项目支持arc.如果想让原来支持arc的不使用arc则添加-fno-objc-arc iOS中arc的设置与使用
在ios中可以采用声明是属性来定义实例变量和属性 在.h文件中直接使用@property 在.m文件中使用扩张定义内部使用的的 格式位@property(参数1,参数2)类型 名称 参数有三类 1.读写属性的 :(readwrite/readonly/setter=/getter=) 2.setter语意:(assign/retain/copy) 3.原子性:(atomicity/nonatomic) 第一类 用于设置set和get方法sette=和getter=用于设置指定的get和set
/******************************************************************************************** * author:[email protected]大钟 * E-mail:[email protected] *site:http://www.idealpwr.com/ *深圳市动力思维科技发展有限公司 * http://blog.csdn.net/conowen * 注:本文为原创,仅作为学习交流使用,转
@synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 . @implementation 关键字,表明类的实现 @end 结束 self 关键字 :类似于java中的this,是隐藏参数,指向当前调用方法的类. super 关键字 :调用父类的方法. self = [superinit] 这里不是判断self与[superinit]是否相等,而是判断是否可以成功初始化.[super init]:父类初始化成功的话
[ARC的特性] ARC下,所有NSObject类型指针, 1. 默认为__strong类型 2. 可以显示的指定为__weak类型,__weak类型指针在所指向对象销毁后会自动置为nil 3. __autorelesing类型用于inout参数类型 ARC下,当一个函数返回一个NSObject指针时,编译器会帮我们实现autorelease调用.例如: return pObject; 编译器会帮我们扩展为 return [pObject autorelease]; ARC下,不能显式relea
iOS 项目中MRC 和 ARC 项目的代码兼容问题: 1.ARC 项目中导入 MRC 第三方类的时候要在此类上添加 -objc-arc. 2.MRC 项目中导入 ARC 类的时候要在次类上添加 -fno-bojc-arc. 步骤如下: a.点击 项目中的 tagart -> Bulid Phases -> Compile Source -> 双击要修改模式的类 -> 添加 -objc-arc. b.如图:
如果在使用第三方类库的时候,我们可能会遇到一些内存管理的问题 那么如何在一个工程中实现ARC和非ARC混用呢,例如你创建一个ARC的工程,但是你引用的第三方类库是非ARC管理内存的 首先点击工程 然后选择Build Phases 最后,在想要修改为非ARC的文件名的右面的Compiler Flags中 添加-fno-objc-arc即可 另一种简单的方法(Edit -> Refactor -> convert to Objective-C ARC,消灭这些警告) 同理,如果你想你创建一个非AR
strong.weak,copy的详解 对象使用strong,ui控件使用weak,字符串用copy 现在使用ARC,ARC判断准则:只要没有强指针指向对象中,找个对象就会被销毁. 1. Strong/weak 默认情况下下是强指针 Person *person = [[Person alloc] init]; 弱指针使用_weak修饰 对象使用strong,为了保证对象在属性也在. 如果:对象中有个属性是_weak类型,那么可能该属性指向的对象已经被销毁,而引发问题. 注意循环引用引发内存泄漏