1

この行に問題があります

ball* balle = [[ball alloc] initWithPNGFileName:ballPath andGame:game andCGRect:CGRectMake( 200, 100, 16, 16 )] ;

問題は「宣言されていないボール」であり、警告:「UIImageView」は「-alloc」に応答しない可能性があり、警告:「-initWithPNGFileName:andGame:andCGRect:」メソッドが見つかりません

メソッドは次のとおりです。

-(id) initWithPNGFileName:(NSString *) filename andGame: (Game*) game andCGRect: (CGRect) imagerect_ {  
    [super init];

    CGDataProviderRef provider;
    CFStringRef path;
    CFURLRef url;


    const char *filenameAsChar = [filename cStringUsingEncoding:[NSString defaultCStringEncoding]]; //CFStringCreateWithCString n'accepte pas de NSString

    path = CFStringCreateWithCString (NULL, filenameAsChar, kCFStringEncodingUTF8);
    url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, NO);
    CFRelease(path);
    provider = CGDataProviderCreateWithURL (url);
    CFRelease (url);
    image = CGImageCreateWithPNGDataProvider (provider, NULL, true, kCGRenderingIntentDefault);

    CGDataProviderRelease (provider);

    imageRect = imagerect_ ;

    [game addToDraw: self] ;
    [game addToTimer : self] ;

    return self ;

}


-(void) draw: (CGContextRef) gc
{
    CGContextDrawImage (gc, imageRect, image );
}

UIImageView を割り当てられない理由と、「-initWithPNGFileName:andGame:andCGRect:」メソッドが見つからない理由がわかりません

ありがとう

4

1 に答える 1

2

あなたが提供したコードから、UIImageView呼び出されたのインスタンスがあるようballです。あなたのクラスが呼び出されてball(クラス名は大文字で始まる必要があります)、.hファイルが適切に含まれていますか?

いくつかの背景情報:はクラス メソッドです。インスタンスallocに送信しません。シグネチャは次のようなものです+ (id) alloc;(ここでプラスに注意してください!) 。存在する場合は、署名があります(ここでマイナスに注意してください!)(これはおそらくそうではありません)。したがって、コンパイラは をクラス名としてではなく、 のインスタンスとして認識します。これは、警告が示すように、 に応答しない可能性があります。デフォルトでは、コンパイラは不明なメソッドが(期待したものではなく) のインスタンスを返すと想定します。これが、このオブジェクトに対して呼び出されたメソッドが見つからないことを警告する理由です。- (id) alloc;ballUIImageView- (id) alloc;idball-initWithPNGFileName:andGame:andCGRect

于 2011-02-16T21:15:58.847 に答える