我正在尝试使用MonoTouch中的以下Objective-C代码:
if(NSClassFromString(@“ADBannerView”))
C#中的等价物是什么?
基本上我想要使用iAd,但我需要检查ADBannerView和ADInterstitialAd是否存在,因为它们并非在所有版本的操作系统上都可用. (而且我宁愿做功能检查而不是iOS版本检查)
我认为这在其他情况下也会有所帮助.
最佳答案 最近的MonoTouch将始终提供ADBannerView,因此您无法使用C#等效的Type.GetType来查询可用性.
通常,版本检查是检查功能的最佳方法.例如.
bool available = UIDevice.CurrentDevice.CheckSystemVersion (4, 0);
对于任何4.0版本的iOS(4.0,当ADBannerView添加到iOS时)将返回true.
一种可能的替代方法(可能在每种情况下都不起作用)是创建一个实例并检查它的句柄.由于ObjC是基于消息的发送,init将返回null(.NET构造函数无法做到的事情).例如.
bool available = (new ADBannerView ().Handle != IntPtr.Zero);
请注意,您可能最好使用处理视图或将其集成到ADBannerView的正常创建中.
更新:当然,对NSClassFromString
的p / invoke与ObjectiveC代码完全相同:-)