发送到已释放实例的消息

发送到已释放实例的消息

char bytes[] = { 1, 2, 3, 4};
NSString * f = [[NSString alloc] initWithBytes:bytes length:4 encoding:NSASCIIStringEncoding];

[f release];

NSLog(@"%@", [f description]); // Why no 'message sent to deallocated instance "?

[f release];

它只给我警告,没有崩溃。
Test1(26194,0xacf302c0) malloc: *** error for object 0x757c2f0: double free

最佳答案

因为NSString很奇怪。 (这是一个类集群,并且免费桥接到CFString。)

在更普通的对象上尝试相同的操作(例如NSObject,对于最简单的情况),您会发现事情的表现超出预期。 (但是请注意,除非启用了保护malloc或类似的调试选项,否则您可能根本不会收到“发送到已释放实例的消息”错误。)

关于iphone - 为什么 objective-c 中的以下代码无法模拟“发送到已释放实例的消息”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13775235/

10-10 20:48