Этот вопрос не является "как я", а скорее "почему это" относительно некоторых свойств класса в Objective-C.
Я понимаю, что два приведенных ниже примера не допускаются и приводят к ошибке ( "выражение не назначается" ):
self.myUIView.frame.origin.x = 50;
self.myUIView.frame.origin = CGPointMake(50,50);
и что правильный способ сделать это - создать новый CGRect, установить нужные значения и затем назначить его:
CGRect rect = self.myUIView.frame;
rect.origin = CGPointMake(50, 50);
self.myUIView.frame = rect;
Я хотел бы понять, почему это так.
CGRect - это структура, содержащая две структуры. Связано ли ограничение с тем, как распределяются структуры, чтобы предотвратить присвоение, которое может переполнить эту память? Или это скорее соглашение о публичной и частной собственности?
Я понимаю, что это похоже на второстепенный/основной вопрос, но я думаю, что важно очистить грязное/плохое понимание этих фундаментальных вещей.