当我试图重写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]; }