Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一个iPhone内存泄漏问题_Iphone_Objective C_Memory Leaks_Sbjson - Fatal编程技术网

另一个iPhone内存泄漏问题

另一个iPhone内存泄漏问题,iphone,objective-c,memory-leaks,sbjson,Iphone,Objective C,Memory Leaks,Sbjson,我在jsonParser上有内存泄漏 这是我的代码 - (id) objectWithUrl:(NSURL *)url { SBJsonParser *jsonParser = [SBJsonParser new]; NSString *jsonString = [self stringWithUrl:url]; // Parse the JSON into an Object return [jsonParser objectWithString:jsonString error:nil];

我在jsonParser上有内存泄漏

这是我的代码

- (id) objectWithUrl:(NSURL *)url {
SBJsonParser *jsonParser = [SBJsonParser new];
NSString *jsonString = [self stringWithUrl:url];

// Parse the JSON into an Object
return [jsonParser objectWithString:jsonString error:nil]; }
这是我收到的错误消息,在第192行分配并存储到“jsonParser”中的对象可能泄漏。


请提供帮助。

+new相当于[[SBJsonParser alloc]init]调用,因此您有责任释放jsonParser对象。当您在return语句中使用它时,修复泄漏的最简单方法是在创建以下内容后立即自动释放它:

SBJsonParser *jsonParser = [[SBJsonParser new] autorelease];

+new相当于[[SBJsonParser alloc]init]调用,因此您负责释放jsonParser对象。当您在return语句中使用它时,修复泄漏的最简单方法是在创建以下内容后立即自动释放它:

SBJsonParser *jsonParser = [[SBJsonParser new] autorelease];

另外,您应该考虑将<代码> OLC/<代码>和<代码> init < /Case>消息,而不是<代码>新< /代码>,而这些函数是等价的,技术上<代码>新< /代码>不是ObjuleC的一部分,并不是社区广泛使用的。Tracki:技术上,<代码> OLC/<代码>和<>代码> init <代码>不是Objtovi-C的一部分。它们是基础框架的一部分。事实上,
new
早于它们,实际上源于Smalltalk。无论如何,你的观点是正确的。每个人都使用
alloc
init
<代码>新的< /代码>在Objut-C上下文中看起来有点奇怪。你可能会看到<代码>新< /C> >在ARC上下文中使用得越来越频繁。此外,你应该考虑发送<代码> OLC/<代码>和<代码> init <代码>消息到类而不是<代码>新< /代码>,而这些函数在功能上是等价的。从技术上讲,new不是Objective-C的一部分,也不是社区广泛使用的@Tracki:技术上,<代码> OLC/<代码>和<>代码> init <代码>不是Objtovi-C的一部分。它们是基础框架的一部分。事实上,
new
早于它们,实际上源于Smalltalk。无论如何,你的观点是正确的。每个人都使用
alloc
init
new
在Objective-C的上下文中看起来有点奇怪。您可能会看到
new
在ARC上下文中使用得越来越频繁。