0

我很困惑,我对 Objective-C 还不是很好,直到现在我一直在关注教程。

我决定将我在 multipul 视图中使用的所有函数添加到一个名为 GeneralHelper 的“CommonClass”中。

尝试调用我的函数时出现以下错误:

实例方法'-convertPoint:' 未找到(返回类型默认为'id')

下面是我的代码:

我的 GeneralHelper.h 看起来像这样:#import

    @interface GeneralHelper : NSObject

    @end

    GeneralHelper* gHelper;

我的 GeneralHelper.m 看起来像这样:

    #import "GeneralHelper.h"
    #import "WhackGame.h"
    #import "SimpleAudioEngine.h"
    #import "Settings.h"

    @implementation GeneralHelper
    -(CGPoint)convertPoint:(CGPoint)point {
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            return ccp(32 + point.x*2, 64 + point.y*2);
        } else {
            return point;
        }
    }

    @end

在我的 Initialize 方法中,我有:

    gHelper = [[GeneralHelper alloc] init]; //First, we create an instance of GeneralHelper

我试图这样称呼它:

    mole1.position = [gHelper convertPoint:ccp(85, 85)];

有任何想法吗?

谢谢

4

2 回答 2

1

您需要convertPoint:在类的接口中声明您的方法。

@interface GeneralHelper : NSObject
- (CGPoint)convertPoint:(CGPoint)point;
@end

标头充当“这是您使用此类所需的所有信息”,其中一条重要信息是“这是您可以发送给此类的消息,以及它们采用的参数”。

您的具体警告是由于编译器无法确定方法的返回类型而不在界面中看到它。

于 2012-08-25T17:14:43.513 回答
0

convertPoint:您没有@interface像这样声明该方法:

@interface GeneralHelper : NSObject
- (CGPoint)convertPoint:(CGPoint)point;
@end

此外,如果您想拥有一个 GeneralHelper 的共享实例,那也不是办法。相反,您应该有一个返回实例的类方法。

@interface GeneralHelper : NSObject
- (CGPoint)convertPoint:(CGPoint)point;
+ (GeneralHelper *)sharedHelper;
@end

然后在您的实现中:

+ (GeneralHelper *)sharedHelper
{
    static GeneralHelper *sharedHelper = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedHelper = [[GeneralHelper alloc] init];
    });
    return sharedHelper;
}

然后在任何你需要的地方:

CGPoint convertedPoint = [[GeneralHelper sharedHelper] convertPoint:point];

或者,您可以简单地使用类方法:

@interface GeneralHelper : NSObject
+ (CGPoint)convertPoint:(CGPoint)point;
@end

实现与以前相同,但使用 + 而不是 - 符号。在这种情况下,您不需要该sharedHelper方法,可以像这样简单地调用它:

CGPoint convertedPoint = [GeneralHelper convertPoint:point];
于 2012-08-25T17:13:58.977 回答