autoreleasing的用法介绍
来源:互联网 发布:淘宝女鞋图片 编辑:程序博客网 时间:2024/06/10 21:59
在c/c++,objective-c内存管理中有一条是:谁分配谁释放。 __autoreleasing则可以使对像延迟释放。比如你想传一个未初始化地对像引用到一个方法当中,在此方法中实始化此对像,那么这种情况将是__autoreleasing表演的时候。看个示例:
被编译器翻译后就变为:
这样即便在函数内部申请的空间,在函数外部也可以使用,同样也适合谁分配谁释放的原则。
同样下面的代码也是类似原因, 只不过在没有开启ARC的情况下适用:
开启ARC后,应改为:经过测试下面这种方法是可行的,不过都不建意这样写代码, __autoreleasing官网的例子是用在传引用参数当中(像上面那个NSError)。所以最好不要像下面这样用
与上面功能相似。返回一个autorelease。
关于methord family, 如果方法名是以alloc, init, copy, mutablecopy,new字符开头的,那么它们的返回值会被retain的,其它的默认就是autorelease返回的。下面介绍一下返回值的例子:
init开头的方法有一个规定,一定要返回id或父类,子类的指针,不然要有warning.
这儿是原话:
当然你也可以打破这个规定,如果你这样声明方法:
那么就是正确的。
被编译器翻译后就变为:
这样即便在函数内部申请的空间,在函数外部也可以使用,同样也适合谁分配谁释放的原则。
同样下面的代码也是类似原因, 只不过在没有开启ARC的情况下适用:
开启ARC后,应改为:经过测试下面这种方法是可行的,不过都不建意这样写代码, __autoreleasing官网的例子是用在传引用参数当中(像上面那个NSError)。所以最好不要像下面这样用
与上面功能相似。返回一个autorelease。
关于methord family, 如果方法名是以alloc, init, copy, mutablecopy,new字符开头的,那么它们的返回值会被retain的,其它的默认就是autorelease返回的。下面介绍一下返回值的例子:
init开头的方法有一个规定,一定要返回id或父类,子类的指针,不然要有warning.
这儿是原话:
当然你也可以打破这个规定,如果你这样声明方法:
那么就是正确的。
0 0
- autoreleasing的用法介绍:
- autoreleasing的用法介绍
- DecimalFormat的用法介绍
- DecimalFormat的用法介绍
- Log4j的用法介绍
- DLL用法的介绍
- stringstream 的用法介绍
- stringstream 的用法介绍
- DecimalFormat的用法介绍
- FMDatabase的用法介绍
- FMDatabase的用法介绍
- 介绍@dynamic的用法
- 介绍@dynamic的用法
- ini_set的用法介绍
- ini_set的用法介绍
- ini_set的用法介绍
- tar 的用法介绍
- threshold的用法介绍
- 小Y的炮 cannon题解
- UITextView汉字光标问题
- 堆内存和栈内存详解
- Java NIO原理图文分析及代码实现
- 为什么Python中没有Switch/Case语句?
- autoreleasing的用法介绍
- 转个博客园的jsonp,说的很透彻
- Python中easy_install安装
- __autoreleasing 修饰符
- java中FTP文件上传/下载
- RelativeLayout与LinearLayout的区别
- MFC显示位图
- jquery.form.js使用实例
- 动态链接库加载的两种方法