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