Ошибка свойства в Задаче C - PullRequest
0 голосов
/ 20 августа 2010

У меня есть следующий код:

In .h:

interface .... {
   int CatID;
   ... 
}
@property (readwrite) int CatID;

.m:
// Already includes the header file (.h) 
implementation ... {
   @synthesize CatID;
....
   - (void)setCatIDa:(int)cid {
       self.CatID = 20;

       NSLog(@"cat id: %d", CatID); // this returns 20
   }

   - (IBAction)someTest:(id)sender {
        NSLog(@"cat id: %d", CatID); // returns 0
   }

}

Как происходит его возвращение 0?

Кроме того, представления NIB меняются между набором иполучить

1 Ответ

0 голосов
/ 20 августа 2010

Без полного кода я не могу точно понять, что вызвало бы такое поведение, но я бы указал на пару вещей, которые могут быть улучшены , а может оказать влияние.

  • Определение свойства не включает (назначить) - скорее всего, оно по умолчанию, но я бы включил его на всякий случай.Таким образом, @property (assign, readwrite) NSInteger catId;
  • Имя iVar начинается с символа верхнего регистра - это экземпляр, поэтому следует использовать нижний регистр.@synthesize catId;
  • При обращении к нему используйте self.catId

Если бы вы могли опубликовать готовый интерфейс и реализацию, было бы проще протестировать.Я написал здесь нечто очень похожее, и оно отлично работает ...

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