1

アプリで Instruments -> Leaks を使用しているときに、最大のメモリ リークが SBJson パーサー実装ファイルにあることがわかりました。

@implementation SBJsonStreamWriterAccumulator
@synthesize data;
- (id)init {
self = [super init];
if (self) {
    data = [[NSMutableData alloc] initWithCapacity:8096u]; //HERE IS 100% LEAK
}
return self;
}
#pragma mark SBJsonStreamWriterDelegate
- (void)writer:(SBJsonStreamWriter *)writer appendBytes:(const void *)bytes length:              (NSUInteger)length {
[data appendBytes:bytes length:length];
 }
 @end

1.これを正しく修正し、パーサーをクラッシュさせない方法は?

2.そして、SBJson を使用しているときにメモリ リークの問題がこれほど多く発生するのはなぜですか?

4

2 に答える 2

3

ARC を使用していないプロジェクトで SBJson 3.1 を使用している可能性があります。
ARC では、これで問題ありません。
プロジェクトが非アークの場合は、非 ARC バージョンである SBJson 3.0 を使用してください。

于 2012-12-07T14:58:23.857 に答える
-1
  1. Read the SBJson documentation https://github.com/stig/json-framework/blob/master/NEWS.md
  2. Because people don't bother reading documentation.

There's an open bug to add a pragma to make the files NOT COMPILE unless ARC is used. I just haven't had time to fix it yet. See: https://github.com/stig/json-framework/issues/151

(Disclaimer: I am the SBJson author.)

于 2012-12-12T14:53:27.950 に答える