MonoTouch "无法识别的选择器发送给instance"不能在iOS5上运行(但可以在iOS6
本文关键字:quot iOS5 不能 但可以 iOS6 instance 运行 识别 选择器 MonoTouch | 更新日期: 2023-09-27 18:11:00
我得到以下错误链接对Aviary SDK使用MonoTouch。
-[__NSArrayM objectAtIndexedSubscript:]:无法识别的选择器发送到实例0x9b0f1d0
当我尝试推链接的控制器时出现问题。
PresentViewController(photoEditor, true, new NSAction(() => {}));
我已经把我的项目推到/分享到https://github.com/theonlylawislove/MonoTouch.Aviary,在那里你可以重现这个问题。
我的演示应用程序在iOS 6模拟器上工作,但上述错误发生在iOS 5模拟器(和设备)上。
我直接从最新的Aviary SDK 3.0中获取了所有内容(.a/bundles)。他们提供的演示应用程序(使用相同的。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绑定,我希望得到解决方案与社区分享。
补充@Poupou的答案,在iOS 5中使用这个选择器很容易,你只需要链接到libarclite.a
。
这是Xamarin的一个样本。如果你愿意,你也可以从那里抓取libarclite.a
。
只要把libarclite.a
添加到你的绑定项目,你应该很好去。
希望有帮助
亚历克斯这个错误是正确的,因为objectAtIndexedSubscript:
选择器在iOS5中不可用。参见:objectAtIndexedSubscript在IOS5中可用吗?
这并不意味着你的演示到达与原始演示相同的代码路径。你可能会执行一些原始演示的内容。他们提供的演示应用程序(使用相同的。a lib)在iOS 5上运行
如果这是来自Aviary SDK(而不是来自你的代码),那么你需要:
- 从他们那里修复;或
- 一些关于如何避免使用此选择器的代码路径的提示(如果他们的演示在iOS5上工作并且做你想要的,必须有一个);或
- 旧版本仍然兼容iOS5。