2

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

也可以在我的类方法中访问实例变量吗?

4

3 回答 3

3

不,您不能使用实例调用静态方法。静态方法只能使用类名调用。

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

于 2013-06-26T12:23:26.747 回答
2

有什么方法可以将类方法(即 +(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?你看到废话了吗?

于 2013-06-27T00:15:20.290 回答
0

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

于 2013-06-26T23:59:48.977 回答