NSObject是Objective-C中的抽象类吗?但是我们可以创建NSObject的实例,那么它如何遵循Abstract类的规则呢?

时间:2011-12-21 06:22:38

标签: objective-c

在Objective-C中哪个类是Abstract类,我读过一些文档,其中NSObject是Abstract类,但是我们可以创建NSObject的实例,然后它是如何遵循抽象类规则的。

NSObject *obj = [[NSObject alloc] init];    
NSLog(@"description = %@",[obj description]);    
NSLog(@"class name = %@",[obj class]); 

请建议。

我还在Objective-C中听到了另一个抽象类,这个类的名称是什么?

2 个答案:

答案 0 :(得分:3)

Objective-C没有编译时间限制来实例化抽象类。见Creating an abstract class in Objective-C

答案 1 :(得分:0)

在Objective-C中,没有抽象类的语言级概念。您必须阅读类的文档以确定是否应将其视为抽象类。 Cocoa中有一些这样的类,例如NSObjectNSProxyNSOperation。行为在协议中而不是在抽象类中定义更为常见。

Cocoa框架包含根类(即没有超类的类)。 NSObject是一个根类,NSProxy是另一个。 NSProxy未实现init方法,这意味着当您尝试创建实例时会引发异常。