1

コードにこの crash:objc_retains があります。

私のプロジェクトはARCです。

次に、シンボルが「objc_retain」でモジュールが「libobjc.A.dylib」のシンボリック ブレークポイントを追加します。

そして、「BlocksKit」のこのファイルで最終的にクラッシュすることがわかりました:

+ (void)associateCopyOfValue:(id)value withKey:(const char *)key {
    objc_setAssociatedObject(self, key, value, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

「BlocksKit」の「performBlock...」機能を使用しなかった場合は、次のように機能します。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //if I delete the code below, it works
    [self performBlock:^(id sender) {
        NSLog(@"hit");
    } afterDelay:0.3f];
}

これを数日間デバッグしましたが、この問題を解決できませんT_T 誰か助けてくれませんか?

これは私のプロジェクトです: http://www.mediafire.com/download/hppnt7k491y5f1k/QQSDKDemo.zip

これはコール スタックです。

callStack :(
    0   QQSDKDemo                           0x00008b8e +[NSObject(A2BlockDelegateBlocksKitPrivate) bk_accessorsMap] + 142
    1   QQSDKDemo                           0x00008de1 +[NSObject(A2BlockDelegateBlocksKitPrivate) registerDynamicDelegateNamed:forProtocol:] + 81
    2   QQSDKDemo                           0x00009f58 +[MFMailComposeViewController(BlocksKit) load] + 136
    3   libobjc.A.dylib                     0x019657f5 call_load_methods + 437
    4   libobjc.A.dylib                     0x01967de5 load_images + 133
    5   ???                                 0x8fef0c32 0x0 + 2414808114
    6   ???                                 0x8feff252 0x0 + 2414867026
    7   ???                                 0x8feff0ba 0x0 + 2414866618
    8   ???                                 0x8fef0e05 0x0 + 2414808581
    9   ???                                 0x8fef4adb 0x0 + 2414824155
    10  ???                                 0x8fef0376 0x0 + 2414805878
    11  ???                                 0x8fef0077 0x0 + 2414805111
)
4

2 に答える 2

0

なぜこれが起こっているのかはわかりませんが (遠くから見ると問題ないように見えます)、回避できる方法はたくさんあります。

代わりに、次を使用してはどうでしょうか。

[self performSelector:@selector(doSomething) withObject:nil afterDelay:0.3];

それ以外の場合は、BlocksKit の作成者に問題を提起する可能性がありますか?

于 2013-10-17T02:42:59.340 に答える