我在使用MonoTouch链接Aviary SDK时出现以下错误。
- [__ NSArrayM objectAtIndexedSubscript:]:无法识别的选择器发送到实例0x9b0f1d0
当我尝试推送链接控制器时会出现问题。
PresentViewController(photoEditor, true, new NSAction(() => {}));
我已将项目推送/共享到https://github.com/theonlylawislove/MonoTouch.Aviary,您可以在那里重现问题。
My Demo应用程序适用于iOS 6模拟器,但上述错误发生在iOS 5模拟器(和设备)上。
我直接从最新的Aviary SDK 3.0中获取了所有内容(.a / bundles)。他们提供的演示应用程序(使用相同的.a lib)适用于iOS 5,因此问题必须出在MonoTouch和链接上。
这是我的链接标记。
[assembly: LinkWith ("libAviarySDK.a",
LinkTarget = LinkTarget.ArmV7 | LinkTarget.Simulator,
ForceLoad = true,
IsCxx = true,
Frameworks="Accelerate CoreData CoreText Foundation MessageUI OpenGLES QuartzCore StoreKit SystemConfiguration UIKit",
WeakFrameworks="AdSupport",
LinkerFlags="-ObjC -all_load -fobjc-arc -lz -lsqlite3.0")]
有什么想法吗?提前致谢!我希望解决方案能够与社区分享,因为Aviary不提供MonoTouch绑定。
答案 0 :(得分:6)
补充@Poupou的回答,很容易让iOS 5中的选择器可用,只需链接libarclite.a
。
如果您希望从那里抓取libarclite.a
,也可以使用Xamarin.iOS绑定sample。
只需将libarclite.a
添加到您的绑定项目中就可以了。
希望这有帮助
亚历
答案 1 :(得分:2)
在iOS5中objectAtIndexedSubscript:
选择器不可用的意义上,错误正确。请参阅:Is objectAtIndexedSubscript available in IOS5?
他们提供的演示应用程序(使用相同的.a lib)适用于iOS 5
这并不意味着您的演示符合与原始演示相同的代码路径。你可能正在执行原始演示的工作。
如果这是来自 Aviary SDK (而不是来自您的代码),那么您需要: