And*_*ndy 4 class object objective-c instance-variables instance
我很难绕过这个概念.我将从书中准确地引用这句话:
类对象也从层次结构中的上层类继承.但是因为它们没有实例变量(只有实例),所以它们只继承方法.
如果我错了,请纠正我,但是一个类对象是这样的:
NSString *aString = [[NSString alloc]initWithString:@"abc.."];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,类对象是*aString- 到目前为止我是否正确?
令我困惑的是上面引用中的第二句,"但是因为它们没有实例变量(只有实例),所以它们只继承方法."
我认为一个对象(在这种情况下*aString)是NSString该类的实例.上面的第二句意味着一个实例是不同的.这对我没有任何意义.
你错了.
NSString *aString = [[NSString alloc] initWithString:@"abc..."];
Run Code Online (Sandbox Code Playgroud)
在这一行中,我们从左到右:
NSString *aStringClass:NSString+alloc-initWithString:@"abc..."在Objective-C中,a Class实际上是一种对象.您可以通过许多与实例相同的方式与它们进行交互,但由于它们是"类",因此它们不能具有实例变量(因为实例变量,根据定义,仅适用于实例). Classes只有方法.它们继承自其他Classes,这就是对象继承的实现方式.
有关这方面的更多信息,请查看Greg Parker撰写的这篇精彩博文:http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html