Свойства инициируются с неверным адресом - PullRequest
0 голосов
/ 21 марта 2012

У меня есть ошибка, которая, как я подозреваю, может быть компилятором ... Я сам не эксперт, но я проверял какой-то другой код с точно таким же поведением у эксперта, и мы не могли его выяснить.

Я настраиваю свойство как таковое: @interface aViewController ()

@property (nonatomic, strong) NSArray *listOfTitles;
@end

@implementation aViewController

@synthesize listOfTitles = _listOfTitles;

- (NSArray *)listOfTitles
{
    if (!_listOfTitles)
        _listOfTitles = [NSArray arrayWithObjects:@"first", @"second", @"third", @"fourth", nil];
    return _listOfTitles;
}

Однако приложение вылетает (массив будет более сложным и будет служить для настройки свойств textLabel.text на UITableViewCell).

Что беспокоит меня, так это то, что NSArray всегда имеет неверный адрес (0x00000001). Что мне не хватает? Разве это не правильный способ создания ленивых экземпляров?

Как я уже упоминал, я испытал то же самое (свойство, созданное с помощью 0x00000001) с другими классами в других проектах. Вот почему я подозреваю, что проблема в компиляторе. Но на самом деле, я весь в ушах для решений! ...

1 Ответ

0 голосов
/ 21 марта 2012

Наиболее очевидное решение - установить для ivar значение nil в функции инициализации.

-(id)init{
    if (self = [super init]){
        _listOfTitles = nil;
    }
}

Реальный вопрос - почему это не делается для вас, поскольку все ivars должны быть инициализированы равными nil?,Я подозреваю, что это как-то связано со свойством, объявленным в файле .m.В любом случае это не причинит никакого вреда самому илару.

...