我正在尝试使用NSClassFromString来防止代码块在iOS 3.2之前的设备上运行.有问题的代码块如下:
if (NSClassFromString(@"UITapGestureRecognizer"))
{
UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(dismissKeyboard)] autorelease];
[tap setCancelsTouchesInView:NO];
[[self view] addGestureRecognizer:tap];
}
Run Code Online (Sandbox Code Playgroud)
我这样做是因为Apple的文档声明UITapGestureRecognizer与3.2之前的安装无法比较.https://developer.apple.com/library/ios/#documentation/uikit/reference/UITapGestureRecognizer_Class/Reference/Reference.html
我原本以为当我在这个设备上运行它时,使用NSClassFromString将返回nil,但事实并非如此.该语句为真,代码执行.(有趣的是,代码类型适用于3.2之前的安装.)
无论如何,我想知道为什么NSClassFromString没有返回nil,并且有什么我可以做的其他方式来完成我想要做的事情?
谢谢!
*这是我正在运行的设备:
忙碌的猫http://f.cl.ly/items/2H3R243s1Q3W343f2N0w/version_stackOverflowPost.png