この質問は、プログラミングの基本C
(つまり、非オブジェクト指向プログラミング)に戻ります。
構造体を参照するプロパティを使用すると、その構造体への参照ではなく、その構造体のコピーを取得することになります。
あなたが書くなら
CGRect rect = CGRectMake(...);
CGRect rect2 = rect;
rect2
への参照を割り当てているのではなくrect
、構造体のコピーを作成しています。変更しても変更rect2
されませんrect
。
同様に、プロパティとして返される構造体の要素を変更すると、オブジェクトが所有するrectのコピーの要素が変更されます。文字通り、これから得られるメリットはありません。どこにも参照されていない構造体の要素の値を変更しているため、この種のコードは使用できません。
クラスで実際に使用されていた構造体を編集する場合は、プロパティがその構造体へのポインタを返す必要があります。これは可能ですが、コードは価値があるよりも乱雑になります。
typedef struct myObj{BOOL isUp;} TOBJECT;
...
@property (nonatomic, assign) TOBJECT* myObj; //in class interface
...
self.myObj = malloc(sizeof(TOBJECT)); //in init method.
...
self.myObj->isUp = YES; //elsewhere, even potentially outside the class.
...
free(self.myObj); //in class dealloc method.