Jos*_*ick 2 iphone xcode memory-leaks memory-management objective-c
所以我用Xcode做了那件事,你说分析它发现泄漏和东西,在这里,它说我漏了(在下面的代码中标出).
// Copy dictionary to memory
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"DataCategoriesDictionary" ofType:@"plist"];
NSDictionary *dataCategoriesDictionary = [[NSDictionary alloc] initWithContentsOfFile:filepath];
self.choices = [[NSMutableDictionary alloc] initWithDictionary:[dataCategoriesDictionary objectForKey:self.chosenCategory]]; // LINE 55
[dataCategoriesDictionary release]; // HERE, the compiler says "Potential leak of an object allocated on line 55"
Run Code Online (Sandbox Code Playgroud)
虽然它没有任何意义,我可以渗出了实例变量,我尝试添加释放语句也无妨和Xcode中仍然给了我同样的错误.还有什么我可以泄漏?
如果选择是具有保留的属性,则会泄漏NSMutableDictionary.
[[NSMutableDictionary alloc] initWithDictionary
Run Code Online (Sandbox Code Playgroud)
自动释放或使用临时.
self.choices = [[[NSMutableDictionary alloc] initWithDictionary:[dataCategoriesDictionary objectForKey:self.chosenCategory]] autorelease];
Run Code Online (Sandbox Code Playgroud)
或(我最喜欢的)
self.choices = [NSMutableDictionary dictionaryWithDictionary:[dataCategoriesDictionary objectForKey:self.chosenCategory];
Run Code Online (Sandbox Code Playgroud)
要么
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] initWithDictionary:[dataCategoriesDictionary objectForKey:self.chosenCategory]];
self.choices = tempDict;
[tempDict release];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |