Iphone 在iOS上,如果UIGestureRecognitor是抽象类,为什么可以实例化它?
以下代码使用:Iphone 在iOS上,如果UIGestureRecognitor是抽象类,为什么可以实例化它?,iphone,objective-c,ios,abstract-class,Iphone,Objective C,Ios,Abstract Class,以下代码使用: 可以实际编译和运行。我认为不能被实例化 抽象类不是Objective-C中的语言特性(例如,与Java不同),因此编译器无法强制执行它 当一个类在文档中被标记为抽象时,它只是一个如何使用它的提示,但运行时和编译器都不会阻止您直接实例化它 《Objective-C编程语言指南》中关于的章节实际上指出,NSView是一个抽象类的示例,您有时可以不使用子类,因此其概念不像其他语言/框架中那样严格。抽象类不是Objective-C中的语言功能(例如,与Java不同),因此编译器无法强制执
可以实际编译和运行。我认为不能被实例化 抽象类不是Objective-C中的语言特性(例如,与Java不同),因此编译器无法强制执行它 当一个类在文档中被标记为抽象时,它只是一个如何使用它的提示,但运行时和编译器都不会阻止您直接实例化它
《Objective-C编程语言指南》中关于的章节实际上指出,
NSView
是一个抽象类的示例,您有时可以不使用子类,因此其概念不像其他语言/框架中那样严格。抽象类不是Objective-C中的语言功能(例如,与Java不同),因此编译器无法强制执行它
当一个类在文档中被标记为抽象时,它只是一个如何使用它的提示,但运行时和编译器都不会阻止您直接实例化它
Objective-C编程语言指南中关于的部分实际上指出,
NSView
是一个抽象类的例子,您有时可以不使用子类,因此这个概念本身不像其他语言/框架那样严格。感谢omz的回答。这是Apple文档中的相关摘录:
抽象类
某些类的设计只是为了或主要是为了使其他类能够
这些抽象类对方法和实例进行分组
可以由多个子类使用到公共类中的变量
抽象类本身通常是不完整的,但是
包含有用的代码,可减少its的实现负担
子类。(因为抽象类必须有子类才能
它们很有用,有时也称为抽象超类。)
与其他一些语言不同,Objective-C没有要标记的语法
类作为抽象类,也不会阻止您创建实例
抽象类的
NSObject类是中抽象类的典型示例
Cocoa。您从未在应用程序中使用NSObject类的实例
应用程序它不会有任何好处,它将是一个通用的
具有不做任何特殊事情的能力的对象
另一方面,NSView类提供了
抽象类,您可能偶尔会使用其实例
直接的
抽象类通常包含帮助定义结构的代码
应用程序。当您创建这些类的子类时
您的新类中的任意一个都可以轻松地融入到应用程序结构中
并自动处理其他对象
感谢omz的回答。这是苹果文档的相关摘录: 抽象类 某些类的设计只是为了或主要是为了使其他类能够 这些抽象类对方法和实例进行分组 可以由多个子类使用到公共类中的变量 抽象类本身通常是不完整的,但是 包含有用的代码,可减少its的实现负担 子类。(因为抽象类必须有子类才能 它们很有用,有时也称为抽象超类。) 与其他一些语言不同,Objective-C没有要标记的语法 类作为抽象类,也不会阻止您创建实例 抽象类的 NSObject类是中抽象类的典型示例 Cocoa。您从未在应用程序中使用NSObject类的实例 应用程序它不会有任何好处,它将是一个通用的 具有不做任何特殊事情的能力的对象 另一方面,NSView类提供了 抽象类,您可能偶尔会使用其实例 直接的 抽象类通常包含帮助定义结构的代码 应用程序。当您创建这些类的子类时 您的新类中的任意一个都可以轻松地融入到应用程序结构中 并自动处理其他对象
UIGestureRecognizer *gestureRecog = [[UIGestureRecognizer alloc]
initWithTarget:self
action:@selector(handletap:)];
[self.view addGestureRecognizer:gestureRecog];