c# – MonoTouch NSClassFromString

我正在尝试使用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代码完全相同:-)

点赞