iOS 7 で使用するとクラッシュし+[NSTimer scheduledTimerWithTimeInterval:invocation:repeats]
ます。コードは簡単です。ここにコピーペースト(変数の名前を変更したもの)全体があります。
SEL selector = @selector(callback);
NSMethodSignature *signature = [self methodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:self];
[NSTimer scheduledTimerWithTimeInterval:0.5 invocation:invocation repeats:NO];
タイマーが起動すると、次のスタック トレースでアプリがクラッシュします。
変数の 1 つが保持されなくなったのではないかと考えたので (NSTimer のドキュメントには、参照されたすべてのパラメーターが保持されると記載されていますが)、すべての変数を に強く保持しましたself
。残念ながら、クラッシュは続きます。
前もって感謝します!