Fre*_*ins 3 iphone memory-management objective-c ios
我正在开发一个iPhone应用程序,我刚刚创建了这个方法(它是在单例类中):
- (NSDictionary *)getLastPosts
{
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:
[NSURL URLWithString:http://example.org/last/]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSDictionary *data_dict = [parser objectWithString:json_string error:nil];
// release stuff
[parser release];
[request release];
[response release];
[json_string release];
return data_dict;
}
Run Code Online (Sandbox Code Playgroud)
我是一个新手obj-c开发人员,所以我不确定这两件事:
data_dict什么时候应该发布NSDictionary ?更新1
如果data_dict是NSDictionary *data_dict = [[NSDictionary alloc] init],当我应该释放呢?
更新2

在调用者中我有这个:
- (void)callerMethod
{
NSDictionary *tmpDict = [mySingleton getLastPosts];
NSLog(@"retain count: %d", [tmpDict retainCount]);
}
Run Code Online (Sandbox Code Playgroud)
并且调试控制台打印:
retain count: 2
Run Code Online (Sandbox Code Playgroud)
通常,最好释放不再需要的对象.但是,请记住-只有具备的东西alloc,new或者copy在他们的初始化需要被释放.否则他们已经自动释放了.
因此,可以释放解析器,不能释放请求,不能释放响应,可以释放json_string.
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |