- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经使用泄漏来定位与 SBJsonParser 相关的内存泄漏,但我不明白为什么我会得到它?我希望有人能够提供一些见解。Leaks 报告说泄漏来自一个名为 objectWithURL 的方法。从名为 downloadJSONFeed 的方法调用此方法。我已经在下面展示了两者。
任何见解表示赞赏。
- (id) objectWithUrl:(NSURL *)url
{
SBJsonParser *jsonParser = [SBJsonParser new];
NSString *jsonString = [self stringWithUrl:url];
// Parse the JSON into an Object
return [jsonParser objectWithString:jsonString error:NULL];
}
- (void) downloadJSONFeed
{
//set up query
NSString *lat = [NSString stringWithFormat:@"%f", ad.locationManager.location.coordinate.latitude];
NSString *lon = [NSString stringWithFormat:@"%f", ad.locationManager.location.coordinate.longitude];
NSString *postValues = [NSString stringWithFormat:@"http://vivid-wind-8436.herokuapp.com/bathrooms/nearby.json/?lat=%@&lon=%@",lat, lon];
//get server response
id response = [self objectWithUrl:[NSURL URLWithString:postValues]];
//store in dictionary
NSDictionary *dictionary = (NSDictionary *)response;
//array for json data
NSMutableArray *jsonData = [[NSMutableArray alloc] init];
for (NSDictionary *dict in dictionary)
{
Bathroom *bathroom = [[[Bathroom alloc] init] autorelease];
bathroom.name = [dict objectForKey:@"name"];
bathroom.street = [dict objectForKey:@"street"];
bathroom.city = [dict objectForKey:@"city"];
bathroom.state = [dict objectForKey:@"state"];
bathroom.postal = [dict objectForKey:@"postal"];
bathroom.country = [dict objectForKey:@"country"];
bathroom.accessibility = [dict objectForKey:@"access"];
bathroom.gendered = [dict objectForKey:@"bathroomtype"];
bathroom.availability = [dict objectForKey:@"avail"];
bathroom.directions = [dict objectForKey:@"directions"];
bathroom.comment = [dict objectForKey:@"comment"];
bathroom.distance = [dict objectForKey:@"distance"];
bathroom.lat = [dict objectForKey:@"lat"];
bathroom.lon = [dict objectForKey:@"lon"];
[jsonData addObject:bathroom];
}
//now sort array by distance
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [jsonData sortedArrayUsingDescriptors:sortDescriptors];
//dataArray = [[NSMutableArray alloc] init];
//add objects to data array
[dataArray addObjectsFromArray:sortedArray];
//release json data
[jsonData release];
}
最佳答案
[SBJsonParser new]
等于 [[SBJsonParser alloc] init]
。通过调用这个 objectWithUrl
拥有创建的 SBJsonParser
对象,所以你需要在这个方法中释放它:
SBJsonParser *jsonParser = [[SBJsonParser new] autorelease];
您还可以:
- (id)objectWithUrl:(NSURL *)url
{
SBJsonParser *jsonParser = [SBJsonParser new];
NSString *jsonString = [self stringWithUrl:url];
// Parse the JSON into an Object
id jsonObject = [jsonParser objectWithString:jsonString error:NULL];
[jsonParser release];
return jsonObject;
}
关于iphone - SBJsonParser 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284204/
我有一个 mySQL 数据库和一个 php 脚本,该脚本从所述数据库返回表的内容。我将此数据作为字符串,并且能够将其放入数组中,但我不太确定如何将其放入自定义 NSObject 类中。我有什么办法可以
我已经使用泄漏来定位与 SBJsonParser 相关的内存泄漏,但我不明白为什么我会得到它?我希望有人能够提供一些见解。Leaks 报告说泄漏来自一个名为 objectWithURL 的方法。从名为
我在 [SBJsonParser scanRestOfDictionary:] (# > 2000) 中发现了大量漏洞。我不知道在哪里查看代码。任何建议都会非常有用! 谢谢 编辑: 我更新到 JSON
我目前的项目中有 ShareKit,它被编译为静态库。它得到了正确的实现。我还通过将他们的框架添加到我的项目中实现了亚马逊的 AWS SDK。 重复符号似乎来自亚马逊的 AWS SDK 文件“AWSI
在我的应用程序中使用 Instruments ->Leaks 时,我发现最大的内存泄漏是在 SBJson Parser 实现文件中: @implementation SBJsonStreamWrite
我正在尝试从 iGoogle 计算器获取汇率。我已成功运行 NSURLConnection 并通过以下方式在 NSData 中建立结果: - (void)connection:(NSURLConnec
我是一名优秀的程序员,十分优秀!