我有一个 CGSize 的属性:
@property (nonatomic) CGSize descriptionSize;
'
@synthesize descriptionSize = _descriptionSize;
我可以通过点语法访问高度:
self.descriptionSize.height = 35;
但这如何与括号语法一起工作?
[self setDescriptionSize:???];
对我来说看起来很愚蠢很简单,但我无法得到线索。提前致谢!
最佳答案
这是属性点符号的缺陷之一: self.descriptionSize.height 中的这两个点看起来相同,但含义却大不相同。第一个是映射到“get descriptionSize”方法的属性访问器,但第二个是旧式结构引用。第一个点返回一个 CGSize 标量,而不是指向对象中大小值的指针。当第二个点在返回的 CGSize 中设置高度时,它是在堆栈上设置一个值,而不是更改对象中的值。这是您必须执行的操作:
CGSize size = self.descriptionSize;
size.height = 35;
self.descriptionSize = size;
...或不带属性点符号的等效项:
CGSize size = [self descriptionSize];
size.height = 35; // we still use the dot here: size is a struct not an object
[self setDescriptionSize:size];
关于objective-c - 将点语法转换为结构上的括号语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10443771/