2009-05-12 10 views
2

私はこれらの奇妙なエラーを取得していますが、私はそれらを理解していません。ここでのエラーは、次のとおりです。誰かが私にこれらのエラーを説明することはできますか?

error: variable - sized object may not be initialized (#1)

error: statically allocated instance of Objective-C class 'Joke' (#1)

error: statically allocated instance of Objective-C class 'Joke' (#1)

error: cannot convert to a pointer type (# 2)

(注:エラーが私の実装ファイルであったところ、エラーの後に番号が表示されます)ここで

は私の.mファイルです:

#import "Joke.h" 


@implementation Joke 
@synthesize joke; 
@synthesize rating; 


- (id)init { 
[super init]; 
return self; 
} 

- (void)dealloc { 
[joke release]; 
[super dealloc];  
} 

+ (id)jokeWithValue:(NSString *)joke { 
Joke j = [[Joke alloc] init]; // (# 1) This is where #1 errors occurred 
j.joke = joke; 
return [j autorelease]; // (# 2) This is where #2 errors occurred 
} 

@synthesize joke; 
@synthesize rating; 

@end 

感謝!

答えて

10

Objective-Cオブジェクトのインスタンスは、問題の原因となっているポインタでなければなりません。冗談のご初期化する必要があります:オブジェクトは、循環参照としてそれ自体に保持するため

Joke *j = [[Joke alloc] init]; 

また、それは悪い考えです。 j-> joke-> joke-> joke-> joke-> jokeと無限の再帰があります。

6

変数の前に "*"が必要です(例えば、 "Joke * j = [[Joke alloc] init];"

また、各プロパティではなく、@合成を1回だけ行いたいとします。このように: @synthesize joke, rating;

+0

Ahhhありがとう!あなたのアプリが失敗する原因になることが少し奇妙なので、奇妙な! –

+0

本当に変です。ジェイソンの答えを見てください。 –

関連する問題