2

我需要知道以下代码在 Objective-C 中的等效代码是什么

public MyClass(int x, int y) {
        xCoOrdinate = x;
        yCoOrdinate = y;
    }

    public int getXCoOrdinate() {
        return xCoOrdinate;
    }

    public int getYCoOrdinate() {
        return yCoOrdinate;
    }
    public MyClass func() {
        return new MyClass(xCoOrdinate - 1, yCoOrdinate);
    }

这就是我尝试过的:

    -(id)initWithX:(int )X andY:(int)Y
{
    if(self = [super init])
    {
        self.xCoOrdinate = X;
        self.yCoOrdinate = Y;

    }
    return self;
}
-(MyClass *)func
{

    return [self initWithX:(self.xCoOrdinate -1)  andY:self.yCoOrdinate];
}

这是正确的方法吗?

4

2 回答 2

4

不,您需要返回该类的新实例:

-(MyClass *)func
{
    return [[[[self class] alloc] initWithX:(self.xCoOrdinate - 1)  andY:self.yCoOrdinate] autorelease];
}

请注意,我们用于[[self class alloc]创建当前类的新实例MyClass.

于 2012-04-06T12:39:37.840 回答
1

一些更正:

public int getXCoOrdinate() {
    return xCoOrdinate;
}

会成为 :

- (int)getXCoOrdinate
{
    return [self xCoOrdinate];
}

public MyClass func() {
    return new MyClass(xCoOrdinate - 1, yCoOrdinate);
}

会成为 :

+ (MyClass*)func
{
     MyClass* newFunc = [[MyClass alloc] initWithX:0 Y:0];

     if (newFunc)
     {
     }
     return newFunc;
}
于 2012-04-06T12:40:53.500 回答