Создание собственного расширения Adobe AIR, использующего следующий код objC, приведет к сбою в iOS 5.1.
NSDictionary *value=[NSDictionary dictionaryWithObjectsAndKeys: @"aSampleValue",@"aSampleKey",nil];
NSLog(@"Try objectForKeyedSubscript: %@", [value objectForKeyedSubscript:@"aSampleKey"]);
Это завершится ошибкой с «[__NSCFDictionary objectForKeyedSubscript:]: нераспознанный селектор»
У меня это работает прямо сейчас, используя Method Swizzling для переназначения NSDictionary objectForKeyedSubscript: на valueForKey: (если он не существует), но я не очень доволен этим обходным путем. Должен быть параметр platform.xml или флаг компилятора, который не будет удалять эти вызовы функций в iOS 5.1, но я ничего не могу найти. Мой
Примечание. Эта проблема может выглядеть примерно так (и некоторые другие, но у меня нет представителя для ссылок), но это не потому, что собственный проект xCode работает нормально, а ANE, скомпилированный с помощью ADT, нет.
Вещи, которые пробовали и терпели неудачу:
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ
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 .
objectForKey:
. - person borrrden   schedule 25.05.2013