【问题标题】:Why might Xcode think an instance method is a class method?为什么 Xcode 会认为实例方法是类方法?
【发布时间】:2010-09-12 00:37:04
【问题描述】:

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

的方法

-(void)setSuit: (NSString *)suit

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

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

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

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

【问题讨论】:

    标签: objective-c methods


    【解决方案1】:

    问题出在这里:

    [Card setSuit:@"Diamonds"]
    

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-13
        • 2014-05-28
        • 1970-01-01
        • 2012-07-24
        • 2016-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多