2017-08-25 14 views
0

デバイスをiOS 11-beta6にアップグレードすると、ランタイムコードに問題があることが判明しました。私がobj後の最初の引数を取得するためのva_argを使用しようとするとimp_implementationWithBlockでva_listを使用すると、iOS 11でEXC_BAD_ACCESSを取得する

IMP swizzledImplementation = imp_implementationWithBlock(^BOOL(NSObject *obj, ...) { 
    va_list arguments; 
    va_start(arguments, obj); 
    id argument = va_arg(arguments, id); 
    va_end(arguments); 
}; 

、そしてアプリはEXC_BAD_ACCESSに実行されます。コードはiOSシミュレータとiOS 10/9/8の一部のデバイスでは正常です(一部のiOS 10.2デバイスでもクラッシュします)。

va_listに変更がありますか?またはimp_implementationWithBlock?

答えて

0

私は私が問題を見つけると思いますが、64ビットのARMでhttps://forums.developer.apple.com/thread/38470

は、ルーチンは、このようにブロックが単純に実現不可能である可変引数で非可変引数メソッドを実装し、標準ルーチンから別の呼び出し規約を使用して可変引数。

関連する問題