面试题-内存管理(ARC)
来源:互联网 发布:淘宝发布宝贝时间段 编辑:程序博客网 时间:2024/05/13 19:24
1. 内存管理的思考方式
引用计数内存管理的思考方式就是思考ARC所引起的变化
- 自己生成的对象,自己所持有。
- 非自己生成的对象,自己也能持有。
- 自己持有的对象不再需要时释放。
- 非自己持有的对象无法释放。
2. 理解ARC中追加的所有权声明
Objective-C编程中为了处理对象,可将变量类型定义为id类型或各种对象类型。 所谓对象类型就是指向NSObject这样的Objective-C类的指针,例如“NSObject *”。id类型用于隐藏对象类型的类名部分,相当于C语言中常用的“void *”。 ARC有效时,id类型和对象类型同C语言其他类型不同,其类型上必须加所有权修饰符。所有权修饰符一共有4种。 __strong修饰符 __weak修饰符 __unsafe_unretained修饰符 __autoreleasing修饰符
__strong修饰符
id和对象类型在没有明确指定所有权修饰符时,默认为__strong修饰符。
// ARC有效,下面两种表述一样id obj = [[NSObject alloc] init];id __strong obj = [[NSObject alloc] init];// ARC无效,现在看起来和上面一样id obj = [[NSObject alloc] init];// 加上作用域再看一下,ARC有效。明确指定了变量的作用域{ id __strong obj = [[NSObject alloc] init];}// ARC无效,为了释放生成并持有的对象,增加了调用release方法的代码。{ id __strong obj = [[NSObject alloc] init]; [obj release];}
__strong修饰符表示对对象的“强引用”。持有强引用的变量在超出其作用域被废弃,随着强引用的失效,引用的对象会随之释放。
__strong、__weak、__autoreleasing修饰符可以保证将附有这些修饰符的自动变量初始化为nil。
0 0
- 面试题-内存管理(ARC)
- 内存管理面试题
- 内存管理面试题
- Linux C面试题(内存管理)
- Linux C面试题(内存管理)
- Linux C面试题(内存管理)
- Linux C面试题(内存管理)
- iOS面试题(3)----内存管理
- 面试题-内存管理(MRC)
- 操作系统--面试题/内存管理
- OC内存管理(ARC)
- Swift内存管理(ARC)
- iOS 内存管理(ARC)
- 面试题-ARC规则
- iOS面试题学习(1)内存管理
- android面试题——内存管理(0三)
- 面试题 OC引用计数内存管理
- Java内存管理常见面试题
- PHP 利用xdebug单步调试
- React节点插入内容
- Error:Unable to start the daemon process.
- C++拷贝构造
- mysql单列索引、多列索引的使用
- 面试题-内存管理(ARC)
- 现在是2015年10月
- 去掉ListView头布局脚布局的分割线
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 【light oj1078】Integer Divisibility(同余定理)
- SQLSERVER全文索引
- 解决 WinXP下 libcurl.dll 无法定位程序输入点GetTickCount64问题
- 在EditText中插入表情图片 (CharacterStyle&SpannableString)
- 新建博客的感想