国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS非ARC基本內存管理系列5-autorelease方法使用總結

2019-11-14 20:37:15
字體:
來源:轉載
供稿:網友

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, const char * argv[]){ @autoreleasepool { Person *person = [Person person]; person.age = 30;
Person
*Person2 = [Person personWithAge:20]; } return 0;}
上面代碼中是模擬系統寫法:即方法中沒有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還需要去管理內存

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新和县| 彰化市| 镇沅| 湛江市| 芮城县| 鄂托克旗| 柯坪县| 丰原市| 台江县| 北宁市| 舞钢市| 阿拉善左旗| 阳泉市| 孙吴县| 尤溪县| 武定县| 夹江县| 阿荣旗| 磐安县| 桃源县| 凤凰县| 九台市| 湖南省| 陆良县| 新晃| 万安县| 普宁市| 富蕴县| 吕梁市| 如皋市| 汉川市| 宣汉县| 和田市| 瑞丽市| 昌乐县| 黔东| 巴彦县| 壤塘县| 隆昌县| 公安县| 美姑县|