当我试图重写getter时,这个语法是什么?

当我试图重写getter时,这个语法是什么?

我只是想了解更多关于Objective-C中属性如何工作的信息。 这是我的财产:

@property (nonatomic, strong) UIView *myView; 

当我尝试重写getter时,我得到这个帮助:

 -(void)getMyView:(<object-type> **)buffer range:(NSRange)inRange { } 

我知道我可以使用这个:

 -(UIView *)myView { } 

但我只是好奇以前的方法,为什么它在那里,等谢谢你的帮助!

它被称为“Getter索引访问器”,如键值编码指南中所述

从文档:

为了支持对有序对多关系的只读访问,请实现以下方法:

-countOf<Key>必需。 这与NSArray原始方法计数类似。

-objectIn<Key>AtIndex:-<key>AtIndexes:必须实现其中的一个方法。 它们对应于NSArray方法objectAtIndex:objectsAtIndexes:

-get<Key>:range:实现这个方法是可选的,但是提供额外的性能收益。 此方法对应于NSArray方法getObjects:range: NSArray

您可以根据性能原因实施此类方法,如指南中所述

如果基准testing表明需要提高性能,则还可以实现-get<Key>:range: 你的这个访问器的实现应该返回缓冲区中给出的第一个参数,这个参数是第二个参数指定的范围内的对象。

举个例子

 - (void)getEmployees:(Employee * __unsafe_unretained *)buffer range:(NSRange)inRange { // Return the objects in the specified range in the provided buffer. // For example, if the employees were stored in an underlying NSArray [self.employees getObjects:buffer range:inRange]; }