【发布时间】:2011-01-30 16:44:51
【问题描述】:
我是 Objective-c 的新手,我正在尝试了解内存管理以使其正确。
在阅读了苹果的优秀
Memory Management Programming Guide for 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 的范围内是有效的。我不确定它在 functionCtrong> 和 viewDidLoad 中是否有效。
谢谢!
【问题讨论】:
标签: objective-c iphone cocoa-touch memory-management autorelease