我们可以对该类的实例使用类方法(以+号开头)吗



只是想知道是否有任何方法可以将类方法(即+(void)mymethod)与该类的实例一起使用?

还有可能访问类方法中的实例变量吗?

否不能用实例调用静态方法。静态方法只能通过使用类名来调用。

不能从静态方法访问实例变量。只能访问静态变量。

有什么方法可以将类方法(即+(void)mymethod)与该类的实例一起使用吗?

你当然可以。这个类只不过是一个你可以从实例中检索的对象,所以就继续做吧

[[myInstance class] myClassMethod]

是否可以访问我的类方法中的实例变量?

不,原因很明显:这没有任何意义。

您在一个类方法中,希望引用哪个实例?最后一个创建的?第一个?据您所知,甚至可能没有分配实例。让我们举一个的例子

这是一个类声明(只有接口就足够了)

@interface FancyClass : NSObject
@property NSString *name;
+ (void)myFancyClassMethod;
@end

现在让我们声明几个实例

FancyClass *fancy1 = [FancyClass new];
fancy1.name = @"Hi I'm Fancy 1";
FancyClass *fancy2 = [FancyClass new];
fancy2.name = @"Hi I'm Fancy 2";

现在,如果您假设可以从myFancyClassMethod的实现中访问实例变量,那么您希望为name读取什么值?你看到这些废话了吗?

实例var属于一个实例。现在,如果您可以在类方法中访问实例var,那么在所有浮动的实例中,该实例var属于哪个实例?

最新更新