Como obter acesso de atribuição aos elementos CGRect quando o CGRect é uma variável de instância

@interface some_class : some_parent {

 }
@property (nonatomic, assign) CGRect the_rect;

@end

...

@implementation some_class

@synthesize the_rect;

@end

epois de criar uma instância de some_class:

instance_of_some_class.the_rect.origin.x = 0.0;

Que gera um erro "Expressão não atribuível"

Claro que isso funciona bem:

instance_of_some_class.the_rect = CGRectMake(0,0,0,0);

Acho que o problema é que o setter criado automaticamente só sabe sobre a atribuição de um CGRect para "the_rect". OK, entendi. Posso dizer para não criar um setter para que eu possa acessar a variável de membro diretamente e fazer atribuições aos membros da estrutura sem precisar atribuir o CGRect inteir

Suponho que eu poderia dividir isso em quatro CGFloats individuais para origin.x, origin.y, size.width e size.height ... mas você pensaria que haveria uma maneira de fazer isso com o CGRect

O que é confuso é que isso, é claro, funciona bem:

CGRect test = instance_of_some_class.the_rect.origin.x;

Em outras palavras, o getter sabe como navegar na estrutura e extrair o valor de um de seus elementos para que eu possa usá-lo. O oposto não parece ser o caso, pois você simplesmente não consegue encontrar um ivar que é uma estrutura e faz uma atribuição a um de seus elementos sem precisar atribuir a estrutura inteir

Eu também tentei isso:

@interface some_class : some_parent {

@public

    CGRect the_rect;

 }
@property (nonatomic, assign) CGRect the_rect;

@end

pós a instanciação em outro módul

instance.the_rect->origin.x = some_value;

... e ocorreu um erro ao dizer que o membro que está sendo referenciado não é um ponteiro. Tentei usar o endereço de instance.the_rect ... mas também não funciono

EDITAR PARA ESCLARECER: Trata-se de criar uma classe que possui alguns ivars que são estruturas. Depois de instanciar a classe em outro lugar, você poderá fazer atribuições aos elementos da estrutura diretamente:

class_instance.struct_ivar.element = something;

Estou usando o CGRect como um exemplo conveniente de uma estrutura bem conhecida que alguém pode querer usar como iva

questionAnswers(4)

yourAnswerToTheQuestion