jon*_*ers 5 .net c# objective-c xamarin.ios ios
我正在尝试在 MonoTouch 中使用如下 Objective-C 代码:
if (NSClassFromString(@"ADBannerView"))
C# 中的等价物是什么?
基本上我想使用 iAd,但我需要检查 和 是否存在ADBannerView,ADInterstitialAd因为它们并非在所有版本的操作系统上都可用。(而且我宁愿进行功能检查而不是 iOS 版本检查)
我认为这在其他情况下也可能有帮助。
最近的 MonoTouch 将始终提供这样的功能ADBannerView,因此您无法使用相当于 C# 的方法Type.GetType来查询可用性。
通常,版本检查是检查功能的最佳方法。例如
bool available = UIDevice.CurrentDevice.CheckSystemVersion (4, 0);
Run Code Online (Sandbox Code Playgroud)
对于任何 4.0+ 版本的 iOS都将返回trueADBannerView (4.0 是添加到 iOS 时的版本)。
一种可能的替代方案(可能并非在所有情况下都有效)是创建一个实例并检查它的句柄。由于 ObjC 是基于消息的,发送init将返回 null(.NET 构造函数无法执行此操作)。例如
bool available = (new ADBannerView ().Handle != IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)
请注意,您可能最好将上面的内容包围起来using以处理视图或将其集成到您的ADBannerView.
更新:当然 ap/invoke to 的作用与ObjectiveC 代码完全相同NSClassFromString:-)
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |