iOS 基本内存管理系列 5-autorelease方法使用总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS 基本内存管理系列 5-autorelease方法使用总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1762字,纯文字阅读大概需要3分钟。
内容图文
![iOS 基本内存管理系列 5-autorelease方法使用总结](/upload/InfoBanner/zyjiaocheng/1114/04730cc4119e479da2ff3f5c6a8f036d.jpg)
autorelase:可以将对象交给自动释放池中,释放池销毁的时候对里面的对象做一次release操作代码如下
@autoreleasepool { Person *person = [[[Person alloc] init] autorelease]; }
上面代码虽然正确,但是为了简化代码在开发中一般是提供一个类方法来专门创建对象,并且将管理内存的代码封装到类方法中:
注意:定义方法名的时候以类名开头,返回类型为instancetype,而且在创建对象的时候使用self关键字
/******************************** Person.h文件 ********************************************/
#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic,assign) int age; + (instancetype)person; + (instancetype)personWithAge:(int)age; @end/*********************************** Person.m文件 ********************************/#import"Person.h"@implementation Person
// 类方法命名以类名开头 + (instancetype)person { Person *person = [[[self alloc] init] autorelease]; // 用self后Person类不仅可以快速创建对象 如果有子类继承Person也可以创建对象
return person;
}
+ (instancetype)personWithAge:(int)age { Person *person = [self person];
person.age = age;
return person; }
- (void)dealloc { NSLog(@"%d岁的Person对象被销毁",_age); [super dealloc]; } @end/*********************************** mian.m文件 ********************************/#import <Foundation/Foundation.h> #import"Person.h"
int main(int argc, constchar * argv[]) { @autoreleasepool { Person *person = [Person person]; person.age = 30;
Person *Person2 = [Person personWithAge:20]; } return0; }
上面代码中是模拟系统写法:即方法中没有alloc,new,copy说明返回的对象都是autorelease过的对象,不用release或autorelease
而且系统中的很多方法也是遵照这个原则,比如下面代码
@autoreleasepool {
int a = 20;
NSString *str = @"abc"; NSString *str2 = [NSString stringWithFormat:@"%d",a]; NSNumber *num = [[NSNumber alloc] initWithInt:a]; [num release];
}
可以看出在创建NSString类对象的时候就不用关心内存问题,系统已经在底层实现了对内存的管理。但是如果系统方法中涉及到了alloc,new,copy还需要去管理内存
原文:http://www.cnblogs.com/QM80/p/3597023.html
内容总结
以上是互联网集市为您收集整理的iOS 基本内存管理系列 5-autorelease方法使用总结全部内容,希望文章能够帮你解决iOS 基本内存管理系列 5-autorelease方法使用总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。