1

だから、Objective-C で Circle クラスを作ろうとしています。Java と OOP、および Objective-C を少し知っていますが、クラスが初期化されない理由がわかりません。Circle.h は次のとおりです。

#import <Foundation/Foundation.h>
#import "Image.h"

@interface Circle : NSObject
{
    Image *img;
    CGPoint pos;
}

-(id) init;
-(void) draw;


@end

これが Circle.m ファイルです。

#import "Circle.h"

@implementation Circle

-(id) init{
    self = [super init];
    if (self != nil) {
        img = [[Image alloc] initWithImage:[UIImage imageNamed:@"circle.png"]];
        pos = CGPointMake((CGFloat)200, (CGFloat)200);
    }
    img = [[Image alloc] initWithImage:[UIImage imageNamed:@"circle.png"]];
    pos = CGPointMake((CGFloat)200, (CGFloat)200);
    return self;
}

-(void) draw{
    [img renderAtPoint: pos centerOfImage: YES];
}

@end

次に、メインクラスで次のように呼び出します。

//player is the name of the circle object (Circle *player;)
[player init];

そして、私のレンダーメソッドで私は呼び出します:

[player draw];

アプリを実行すると、画像が描画されません。

4

1 に答える 1

1

あなたはおそらく言いたい:

player = [[Circle alloc] init];

だけではなく[player init]、後者は player が nil (メンバーのデフォルト値) の場合は何もしないためです。

于 2012-07-30T19:38:17.080 に答える