有人可以向我解释一个类如何被称为对象,如其中一个苹果文档页面中所提及的那样#34; Objective-C Classes也是对象"
答案 0 :(得分:0)
在Objective-C类对象中,参与了两个重要的技术:
self
始终引用类对象。当您在编译时不知道该类时,这很有用。 I. e。:
Class aClass = …; // I. e.: Rectangle, Circle, … selected by the user
Shape aShape = [[aClass alloc] init]; // Create a shape
此外,它对于类方法的动态调度很有用。具有:
@interface Shape : NSObject
…
@end
@interface Rectangle : Shape
…
@end
…
@implementation Rectangle
+ (NSUInteger)numberOfAnchorPoints
{
return 2;
}
@end
@implementatin Shape
+ (void)doSomething
{
NSUInteger = [self numberOfAnchorPoints]; // NOT: [Shape numberOfAnchorPoints]
…
}
@end
拥有一个动态类对象,如:
Class shape = [Rectangle class];
[shape doSomething];
执行子类+doSomething
的 Rectangle
,即使Shape
甚至不知道它的子类。
或者,有一个更简单的例子:
@implementation NSObject
+ (id)new
{
return [[self alloc] init]; // self points to the receiver, not to NSObject
}
@end
…
Custom* custom = [Custom new]; // The receiver is the class object of Custom.