以下代码使用UIGestureRecognizer :
UIGestureRecognizer *gestureRecog = [[UIGestureRecognizer alloc]
initWithTarget:self
action:@selector(handletap:)];
[self.view addGestureRecognizer:gestureRecog];
居然可以编译运行。我以为abstract class不能实例化?
最佳答案
抽象类不是 Objective-C 中的语言特性(例如,与 Java 不同),因此它不是编译器可以强制执行的东西。
当一个类在文档中被标记为抽象类时,这只是一个提示,打算如何使用它,但运行时和编译器都不会真正阻止您直接实例化它.
关于 abstract classes 的部分在 Objective-C Programming Language Guide 中实际上声明 NSView
是一个抽象类的示例,您有时可以在没有子类化的情况下使用它,因此这个概念并不像其他语言/框架那样严格。
关于iphone - 在iOS上,为什么UIGestureRecognizer可以被实例化,如果它是一个抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368606/