《Objective-C基础教程》看完,发现Xcode4.2以后手动内存管理用处小了很多,
《IOS编程》正好也讲内存,就试了一下4.2中还有些传承的autorelease,
结果没想象中死的那么惨 哈哈
说说自己的理解 就拿description方法来说:
-(NSString*)description
{
NSString* description = [[NSString alloc]initWithFormat:@"%@,%@,%d,%@",name,sNumber,value,dateOfSomething];
//release加在这的话 会让对象在return之前被释放掉
return [description autorelease];
//release加在这根本不会被执行
}
所以需要有一种暂时把值传走,过段时间再release的机制,就是autorelease啦
类方法也是一个意思
+(id)randomPos;
{
NSArray* nameString = [NSArray arrayWithObjects:@"ru",@"ta",@"kan", nil] ;
NSArray* numString = [NSArray arrayWithObjects:@"7",@"321",@"564", nil] ;
int idx = rand()%[nameString count];
int idx2 = rand()%[numString count];
return [[[self alloc ]
initWithName:[nameString objectAtIndex:idx]
sNumber:[numString objectAtIndex:idx]
value:idx
date:[NSDate date]]
autorelease];
}
最后上个小截图,是cocoaApp模板的应用: