al1*_*1nk 1 iphone cocoa-touch memory-leaks objective-c nsmutablearray
我正在尝试解决内存泄漏,但我找不到任何解决方案.
仪器表示此方法存在泄漏:
- (void)refreshData {
Sn0werSp33dAppDelegate *appDelegate = [[Sn0werSp33dAppDelegate alloc] init];
NSFetchRequest *coreDataNewsFetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"News" inManagedObjectContext:managedObjectContext];
[coreDataNewsFetchRequest setEntity:entity];
self.managedObjectContext = appDelegate.managedObjectContext;
self.newsArray = [[managedObjectContext executeFetchRequest:coreDataNewsFetchRequest error:nil] mutableCopy];//Intruments says that here is the memory leak :(
[appDelegate release];
[coreDataNewsFetchRequest release];
[entity release];
}
Run Code Online (Sandbox Code Playgroud)
newsArray
在我的.h中声明为NSMutableArray,它有一个属性:
@property (nonatomic, retain) NSMutableArray *newsArray;
我尝试了很多东西,但在任何时候,事情都没有用.我正在使用iPhone SDK 4.2.1和Instruments 2.7运行XCode 3.2.5.
mru*_*ueg 12
当你这样做
self.newsArray = something;
Run Code Online (Sandbox Code Playgroud)
这something
被保留,因为你添加retain
的newsArray
属性.
但是mutableCopy
也返回一个保留计数增加1的对象.因此,在该方法完成后,您newsArray
的保留计数比您真正想要的高一个,这是检测到的内存泄漏.
解决方法:更换,你分配线self.newsArray
与
self.newsArray = [[[managedObjectContext executeFetchRequest:coreDataNewsFetchRequest error:nil] mutableCopy] autorelease];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4880 次 |
最近记录: |