我得到一个仪器内存泄漏与此iPhone 3.0 SDK代码。iPhone内存泄漏JSON库
我使用JSON从http://code.google.com/p/json-framework/
这里是我的代码:
// .h
@property (nontatomic,retain) NSMutableArray *tweets;
// .m
import" JSON.h"
@synthesize tweets;
...
tweets = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:@"http://www.someurl.com"];
NSString *jsonString = [NSString stringWithContentsOfURL:url];
NSArray *results = [jsonString JSONValue];
NSArray *data = [results valueForKey:@"stories"];
for(NSDictionary *tweet in data) {
TweetmemeData *tweetmeme = [[TweetmemeData alloc] initWithTweet:tweet];
[tweets addObject:tweetmeme];
[self debugDump:tweetmeme];
[tweetmeme release];
}
[results release];
return tweets;
如果可能的话,请详细介绍一下这种形式的内存管理。我非常熟悉保留/释放,但显然在实施时遇到问题:)
谢谢!
请注意,我不会发布NSArray *数据...如果我有锁定的话。此外,如果我保留结果似乎有帮助...预先感谢 – 2009-08-06 14:27:30
根据约定,由于[jsonString JSONValue]不包含单词“alloc”,“新”或“复制”,它可能会返回一个自动释放指针,这意味着你不应该释放“结果”数组。 “数据”NSArray也是如此。 – 2009-08-06 14:45:25
似乎'tweets'可能应该是autoreleased - 你是alloc/initing它,然后在方法结束时返回它。 另外,如果'tweets'是一个属性,那么您可能想要使用self.tweets而不是tweets,这样当它初始化时,它就会根据属性声明保留。 没有所有的代码,很难说,但从你显示的东西看来,事情似乎不平衡。 – Hunter 2009-12-30 16:54:29