Iphone Objective-C中的记忆管理问题
我有一个方法:Iphone Objective-C中的记忆管理问题,iphone,objective-c,Iphone,Objective C,我有一个方法: -(NSArray *)doSomething{ NSArray *array = [[NSArray alloc] initWithObjects:@"Huy 1",@"Huy 2",@"Huy 3",nil]; [array release]; return array; } 及 我认为我在doSomething()上发布了数组,所以它不会返回我在doSomething()上创建的NSArray。我不知道它还印着“Huy 2”?任何人
-(NSArray *)doSomething{
NSArray *array = [[NSArray alloc] initWithObjects:@"Huy 1",@"Huy 2",@"Huy 3",nil];
[array release];
return array;
}
及
我认为我在doSomething()上发布了数组,所以它不会返回我在doSomething()上创建的NSArray。我不知道它还印着“Huy 2”?任何人都可以告诉我为什么?使用以下方法:
-(NSArray *)doSomething{
NSArray *array = [[NSArray alloc] initWithObjects:@"Huy 1",@"Huy 2",@"Huy 3",nil];
return [array autorelease];
}
按以下方式使用该方法:
-(NSArray *)doSomething{
NSArray *array = [[NSArray alloc] initWithObjects:@"Huy 1",@"Huy 2",@"Huy 3",nil];
return [array autorelease];
}
如果这与release
而不是autorelease
一起工作,可能是因为数组使用的内存还没有被其他任何东西使用。这只是个机会。我怀疑如果在NSArray*array=[self doSomething]之后分配一个对象代码>您将得到意外的结果
如果这与release
而不是autorelease
一起工作,可能是因为数组使用的内存还没有被其他任何东西使用。这只是个机会。我怀疑如果在NSArray*array=[self doSomething]之后分配一个对象代码>您将得到意外的结果
-(NSArray *)doSomething
{
NSArray *array = [[NSArray alloc] initWithObjects:@"Huy 1",@"Huy 2",@"Huy 3",nil];
return [array autorelease];
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *array = [self doSomething];
if([array count]) //if array is nil this will evaluate to false. If count is 0 this will evaluate to false too.
{
NSLog(@"%@\n", [array objectAtIndex:1]); //NSLog insert values for you
}
else
{
NSLog(@"Null");
}
}