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

Reg*_*an 3 methods objective-c

我正在尝试编译一些代码,其中有一个名为Card的类.它有一个叫做的方法

-(void)setSuit: (NSString *)suit

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

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

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

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

NSR*_*der 5

您正在尝试发送-setSuit:Card类.你可能想发送消息到实例Card,而不是类.


Dou*_*las 5

问题出在这里:

[Card setSuit:@"Diamonds"]
Run Code Online (Sandbox Code Playgroud)

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

Card *card = [[Card alloc] init];
[card setSuit:@"Diamonds"];
Run Code Online (Sandbox Code Playgroud)