如果我有这段代码
现在我明白这是根据苹果文档的预期行为。如果我删除释放代码,崩溃就不会发生,但我发现*request仍然存在内存泄漏问题。所以我重写了代码。
NSString *postData = [@"foo=" stringByAppendingString:fooText.text];
...
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
...
[postData release]; //this causes crash
[request release]; //this causes crash
现在我明白这是根据苹果文档的预期行为。如果我删除释放代码,崩溃就不会发生,但我发现*request仍然存在内存泄漏问题。所以我重写了代码。
NSString *postData;
//postData = [NSString alloc]; // this line commented out since OP
postData = [@"foo=" stringByAppendingString:fooText.text];
...
NSMutableURLRequest *request;
request = [NSMutableURLRequest alloc];
request = [request initWithURL:url];
...
[postData release]; //this still crashes #
[request release]; //this works fine
我不太明白为什么会在#处崩溃。这里有什么推荐的最佳实践吗?我认为我可能漏掉了一些东西,因为我经常看到“简写”方法(顶部)有一个释放(例如Kochan的Objective-C编程),但Apple文档说这是错误的。