我是objective-c的新手,我正在尝试理解内存管理以使其正确。
在阅读了苹果出色
的 Cocoa 内存管理编程指南之后,我唯一关心的是当一个自动释放的对象在 iphone/ipod 应用程序中被释放时。我的理解是在运行循环的末尾。但是什么定义了应用程序中的运行循环?
所以我想知道下面的代码是否正确。假设一个对象
@implementation Test
- (NSString *) functionA {
NSString *stringA;
stringA = [[[NSString alloc] initWithString:@"Hello"] autorelease]
return stringA;
}
- (NSString *) functionB {
NSString *stringB;
stringB = [self functionA];
return stringB;
}
- (NSString *) functionC {
NSString *stringC;
stringC = [self functionB];
return stringC;
}
- (void)viewDidLoad {
[super viewDidLoad];
NSString* p = [self functionC];
NSLog(@"string is %@",p);
}
@end
此代码有效吗?
从苹果文本中,我了解到从functionA返回的 NSString 在 functionB的范围内有效。我不确定它在functionC和viewDidLoad中是否有效。
谢谢!