0

次の objC コードを使用する Adob​​e AIR ネイティブ拡張を作成すると、iOS 5.1 でクラッシュします。

NSDictionary *value=[NSDictionary dictionaryWithObjectsAndKeys: @"aSampleValue",@"aSampleKey",nil];    
NSLog(@"Try objectForKeyedSubscript: %@", [value objectForKeyedSubscript:@"aSampleKey"]);

「[__NSCFDictionary objectForKeyedSubscript:]: 認識されないセレクター」で失敗します

Method Swizzling を使用して NSDictionary objectForKeyedSubscript: を valueForKey: (存在しない場合) に再マップしていますが、その回避策にはあまり満足していません。iOS 5.1 でこれらの関数呼び出しを削除しない platform.xml オプションまたはコンパイラ フラグが必要ですが、何も見つかりません。じぶんの

注: この問題は次のように見えるかもしれませんが (他にもいくつかありますが、リンクの担当者はいません)、ネイティブの xCode プロジェクトが正常に動作するためではなく、ADT でコンパイルされた ANE が動作しないためです。

試行錯誤したこと:


仕様

FlashBuilder/AIR: SDK3.7 ADT -バージョン: 3.7.0.1530

xCode プロジェクト BaseSDK: 6.1 (最新) 有効なアーキテクチャ: armv7 armv7s デプロイ ターゲット: iOS 5.1

Platform.XML (他にもサポート要件があるため、かなり長くなります)

<platform xmlns="http://ns.adobe.com/air/extension/3.7">
    <linkerOptions>
    <option>-ObjC</option>
    <option>-weak_framework Accounts</option>
    <option>-framework AddressBook</option>
    <option>-framework AddressBookUI</option>
    <option>-weak_framework AdSupport</option>
    <option>-framework CoreLocation</option>
    <option>-framework CoreMotion</option>
    <option>-framework CoreTelephony</option>
    <option>-framework EventKit</option>
    <option>-framework EventKitUI</option>
    <option>-framework iAd</option>
    <option>-framework MapKit</option>
    <option>-framework MediaPlayer</option>
    <option>-framework MessageUI</option>
    <option>-framework OpenAL</option>
    <option>-weak_framework PassKit</option>
    <option>-framework StoreKit</option>
    <option>-weak_framework Twitter</option>
    <option>-framework UIKit</option>
    <option>-lsqlite3</option>
    <option>-lxml2</option>
    <option>-lz</option>
    </linkerOptions>
</platform>

ADT ビルド コマンド:

adt -package -target ane build/MyANEName.ane  ANE/extension.xml -swc ANE/MyANEName.swc -platform iPhone-ARM -platformoptions ANE/platform.xml -C ANE/ios .
4

1 に答える 1