为什么找不到我的方法?

时间:2011-05-21 11:42:39

标签: objective-c

在我的文件中,我有

+(CCRenderTexture*) createStroke: (CCLabelTTF*) label
                            size:(float)size   
                           color:(ccColor3B)cor;

在我的m文件中,我实现了这个方法,并像

一样使用它
CCRenderTexture* stroke = [self createStroke:pause  size:3  color:ccBLACK];

但它给了我一个警告“找不到的方法”。为什么呢?

2 个答案:

答案 0 :(得分:7)

由于+createStroke是一种类方法,因此无法在self上调用它。您应该将该消息发送到CCRenderTexture类。

因此,在您的情况下,如果self属于CCRenderTexture类型,则可以将其替换为self.class。 (因此,当您将子类化时,重写的方法将由超类调用) 如果不是,请写下以下内容:

CCRenderTexture* stroke = [CCRenderTexture createStroke:pause size:3 color:ccBLACK];

答案 1 :(得分:2)

plus表示它是一个类方法,因此您需要使用Class Name而不是该类的实例:[ClassName createStroke:pause size:3 color:ccBLACK] 你可能想要一个实例方法,所以在你的声明中加一个减号而不是加号。

以下是有关此主题的更多信息:What is the difference between class and instance methods?