Мне всегда было интересно об этом.
У меня есть @property
с именем hitCounter, и это прекрасно работает:
if ([[someArray objectAtIndex:i] hitCounter]!=0) continue;
Нет проблем, это работает,Нет метода получения hitCounter
, который я написал;это там из-за @synthesize
не так ли?
Однако свойства должны учитывать точечные обозначения.Несмотря на то, что свойство существует, оно синтезируется и импортируется заголовок класса для объектов в этом массиве, но ни один из следующих компиляций:
if ([someArray objectAtIndex:i].hitCounter!=0) continue;
или
if ((MyClass*)[someArray objectAtIndex:i].hitCounter!=0) continue;
Компилятор говорит property hitCounter not found on object of type id
, но ясно, что я приведу его к MyClass
, поэтому он больше не должен иметь тип id
- что здесь происходит?