只是想知道是否有任何方法可以将类方法(即+(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属于哪个实例?