gpt4 book ai didi

iOS:@encode 并直接使用 -> 访问子类的属性

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:44 25 4
gpt4 key购买 nike

我有一个 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 添加到数组中,但这里不是这种情况),所以我尝试了 &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 中对 & 进行强制转换是无效的。不太清楚,请告诉我我的内存是否正确。

最佳答案

[array1 addObject:[NSValue valueWithCGRect:view.frame]];

CGRect rect = [[array1 lastObject] CGRectValue];

文档:NSValue UIKit Additions Reference

关于iOS:@encode 并直接使用 -> 访问子类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21414892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com