为什么Xcode认为实例方法是一种类方法?

时间:2010-09-12 00:37:04

标签: objective-c methods

我正在尝试编译一些代码,其中有一个名为Card的类。它有一个名为

的方法

-(void)setSuit: (NSString *)suit

这是一种实例方法,但是当我说的时候 [Card setSuit:@"Diamonds"]

Xcode说:warning: "Card" may not respond to method +setSuit

我的程序不起作用。我认为Xcode认为setSuit是一个类方法,正如它在警告中所说的那样,那么我如何告诉它我在谈论实例方法呢?

或许这根本不是问题,我真的不知道,因为我以前从未遇到过这个问题。

2 个答案:

答案 0 :(得分:5)

您正在尝试将-setSuit:发送到Card课程。您可能希望将该消息发送到Card实例,而不是该类。

答案 1 :(得分:5)

问题在于:

[Card setSuit:@"Diamonds"]

如果Card是类,那么上面的行将尝试在类上调用方法,而不是实例。你需要在一个实例上调用一个方法,比如说:

Card *card = [[Card alloc] init];
[card setSuit:@"Diamonds"];