У меня есть переменная экземпляра, которая представляет собой структуру, например:
struct Data {
UInt32 i;
UInt32 arr[1];
};
И в моем классе определено свойство:
@property struct Data data; // and the corresponding @synthesize in the imp file
Теперь я знаю, что изменениезначения i
и arr
через getter из data
концептуально неверны, так как я буду получать доступ к копии data
, возвращенной получателем (правильный способ доступа к нему с использованиемself->data
).
Однако возникают некоторые общие вопросы Objective-C, касающиеся следующих строк:
self.data.i = 1; // produces compile error
self.data.arr[0] = 1; // compiles ok
Во-первых, почему первая строка вызывает ошибку компиляции, а вторая -не так?
Во-вторых, если синтаксис точки в приведенной выше строке (self.data
) является просто синтаксическим сахаром для [self data]
, почему я получаю 2 разные (хотя и похожие) ошибки компиляции?1024 *