繁体   English   中英

AIR Native Extension在iOS 5.1中的NSDictionary objectForKeyedSubscript上失败

[英]AIR Native Extension failing on NSDictionary objectForKeyedSubscript in iOS 5.1

创建使用以下objC代码的Adobe AIR本机扩展会在iOS 5.1中崩溃

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

它将失败,并显示“ [__NSCFDictionary objectForKeyedSubscript:]:无法识别的选择器”

我现在已经使用方法刷新将NSDictionary objectForKeyedSubscript:映射到valueForKey:(如果不存在),现在可以正常工作了,但是我对此解决方案并不满意。 必须有一个platform.xml选项或编译器标志,它不会剥离iOS 5.1中的这些函数调用,但我什么也找不到。 我的

注意:此问题可能看起来很像以下问题(以及其他一些问题,但我没有链接的代表),但这不是因为本机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 .

我遇到了同样的问题,我通过为ADT使用-platformsdk选项并将其指向iOS 6.1 SDK来解决了该问题

在OSX上,它位于此处:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

因此,将其添加到您的ADT命令中:

-platformsdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM