您好我有以下代码
NSString *analyticsStr = [[NSString alloc] initWithString:[self constructXMLMessage:TagObj]];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(sendAnalyticsString:)
object:analyticsStr];
[operationQueue addOperation:operation];
[analyticsStr release];
//[operation release];
当我取消注释[操作发布]时,我的应用程序崩溃了。我收到了这个错误:
malloc: *对象0x726ed50的错误:未分配被释放的指针 * 在malloc_error_break中设置断点以进行调试
我认为NSOperationQueue负责保留对象。有什么我做错了或不知道。
答案 0 :(得分:3)
使用Instruments的Zombies模板进行调试。当一个消息应该被解除分配后,它会在时间轴中出现一个标志;您可以单击该标志中的按钮开始调查过度释放对象的内容。
顺便说一句,您不需要创建该字符串对象。 constructXMLMessage:
返回的字符串将持续与当前自动释放池一样长,这应该是您需要使用它的所有时间。它不会突然死在你身上。