我是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中是否有效。
谢谢!