我瞭解iOS內存管理的另一個問題3.0+,我知道,如果我們做[varialbe發佈]將公佈保留的對象,但這樣的代碼 -內存管理時使用釋放
- (void) getPostsFromJson:(NSData *)data
{
NSError *theError = nil;
NSDictionary *dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:data error:&theError];
if (dict == nil) {
[SystemStatusValues getInstance].isValidJson = NO;
[SystemStatusValues getInstance].httpStatus = HTTP_STATUS_FAILED;
NSLog(@"getPostsFromJson - %@ %@",
[theError localizedDescription],
[[theError userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
} else {
NSArray *keys = [dict allKeys];
keys = [keys sortedArrayUsingFunction:keySortByInteger context:nil];
self.keys = keys;
self.posts = dict;
NSLog(@"Posts : getPostsFromJson = %@", self.posts);
if ([keys count] < TOTAL_SECTIONS) {
[SystemStatusValues getInstance].isValidJson = NO;
} else {
[SystemStatusValues getInstance].isValidJson = YES;
if (self.nextPosts == nil) {
}
}
// [keys release];
// [dict release];
return;
}
}
你可以看到有兩個局部變量 - 鍵和字典,我是否需要在代碼結尾調用[keys release]或[dict release]?其實我做到了,但它有時會帶來壓力。那麼對於局部變量,我們不需要在它被使用後釋放它呢?
您可以放棄使用名稱以「alloc」,「new」,「copy」或「mutableCopy」開頭的方法創建的對象的所有權。 – 0x8badf00d