我有一个NSMutableArray
,其中我想存储一些CGRect
:
所以,我尝试使用以下(例如):
UIView *view = [[UIView alloc] initWithFrame:(CGRect){{0, 0}, 50, 50}];
[array1 addObject:[NSValue value:&view->frame withObjCType:@encode(CGRect)]];
但这会引发警告:&view->frame
这是一个属性,但我想直接访问它,以便我可以使用上面的语法并将其用于value:
参数,如上所述。
我知道我可以访问&self->_view
(如果我想将视图添加到数组中,这不是这里的情况),所以我尝试&view->frame
(甚至是&view->_frame
) ,但它会引起警告,但不起作用。
除非我先说明以下内容,否则将会这样做:
CGRect tempRect = view.frame;
[array1 addObject:[NSValue value:&tempRect withObjCType:@encode(CGRect)]];
所以我的问题是 ,我在&view->frame
(甚至:&view->_frame
)做错了什么?
并且有一种方法可以在不必先执行此操作的情况下执行此操作:
CGRect tempRect = view.frame;
[array1 addObject:[NSValue value:&view->frame withObjCType:@encode(CGRect)]];
换句话说,我可以在这里使用强制转换而无需先创建CGRect
(tempRect)吗?
附录:
如果我的记忆服务,我认为在C中&
上施放是无效的。我不确定,如果我的记忆是正确的,请告诉我。
答案 0 :(得分:2)
[array1 addObject:[NSValue valueWithCGRect:view.frame]];
CGRect rect = [[array1 lastObject] CGRectValue];