我有一个简单的例子,说明了我对iPhone内存管理的不了解:
- (IBAction)AssignAndReleaseOne :(id)sender {
for (int i=0;i<10;i++) {
someString = [[NSString alloc] initWithString:@"String Assigned"];
}
[someString release];
}
- (IBAction)AssignAndReleaseTen :(id)sender {
for (int i=0;i<10;i++) {
someString = [[NSString alloc] initWithString:@"String Assigned"];
[someString release];
}
}
我希望在第一种方法中出现内存泄漏,因为我只用一个版本分配10次(或者它是11 :),但是Instruments没有报告任何错误?
我或者仪器是否正确?
谢谢Chris。
答案 0 :(得分:2)
令人惊讶的是,你不会泄漏。见:
答案 1 :(得分:0)
你应该得到你期望的内存泄漏。
仪器的泄漏检测算法运行起来很昂贵,所以它只在指定的时间后执行(我认为默认为10秒)。在仪器拿起泄漏之前,您可能必须让应用程序运行一段时间。