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 に答える