iphone - 在iOS上,为什么UIGestureRecognizer可以被实例化,如果它是一个抽象类?

标签 iphone objective-c ios abstract-class

以下代码使用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/

相关文章:

IOS - 如何修复 "ld: library not found for -lBolts"错误?

iphone - Titanium appcelerator 构建失败

iOS 开发者和分发证书

ios - 如何在不使用 sender.tag 方法的情况下管理 UItableViewCell 中的 UIbutton?

iphone - UISegmentedControl 和添加目标

iphone - 如何在我的 iPhone 应用程序中启动 YouTube 视频?

ios - iPhone OpenGL ES 2.0 - 像素完美纹理

iphone - requireGestureRecognizerToFail不起作用

iphone - 核心数据 - 基本问题

ios - 带有日期字符串的 NSString 的时区是什么?