我发现 NSString 有一个奇怪的行为。我尝试运行以下代码并注意到了这一点。
NSString *str = [[NSString alloc] initwithstring : @"hello"];
[str release];
NSLog(@" Print the value : %@", str);
在这里,在第三行应用程序应该崩溃,因为我们正在访问一个已释放的对象。但它正在打印 str 的值。它没有崩溃。但是使用 NSArray 我观察到了不同的行为。
NSArray *array = [[NSArray alloc] initwithobjects : @"1", @"2", nil];
[array release];
NSLog(@"Print : %@", [array objectatindex : 0]);
NSLog(@"Print : %@", [array objectatindex : 0]);
该代码有两个用于 NSArray 的 NSLog 语句。这里在执行第一个NSLog时释放后,是打印值。但是当执行第二个 NSLog 时,应用程序崩溃了。应用程序崩溃是可以接受的,因为访问的数组已经被释放。但是在执行第一个 NSLog 时它应该会崩溃。不是第二个。
帮助我解决这些行为。在这些情况下发布如何工作。
谢谢吉腾