Может кто-нибудь объяснить мне эти ошибки? - PullRequest
2 голосов
/ 12 мая 2009

Я получаю эти странные ошибки, но я их не понимаю. Вот ошибки:

ошибка: объект переменного размера не может быть инициализирован (# 1)

ошибка: статически размещенный экземпляр класса Objective-C 'Шутка' (# 1)

ошибка: статически размещенный экземпляр класса Objective-C 'Шутка' (# 1)

ошибка: невозможно преобразовать в тип указателя (# 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

Спасибо!

Ответы [ 2 ]

10 голосов
/ 12 мая 2009

Экземпляры объектов Objective-C должны быть указателями, что вызывает вашу проблему. Ваша инициализация шутки должна быть:

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

Кроме того, плохая идея, чтобы объект держался как круговая ссылка. Вы бы имели бесконечную рекурсию с j-> шутка-> шутка-> шутка-> шутка-> шутка ...

6 голосов
/ 12 мая 2009

Вам нужно "*" перед своими переменными - например, "Joke * j = [[Joke alloc] init];"

Вы также хотите, чтобы @synthesize там был только один раз - не для каждого свойства. Как это: @synthesize joke, rating;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...