6

当我试图覆盖 getter 时,这种语法是什么?

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

@property (nonatomic, strong) UIView *myView;

当我尝试覆盖 getter 时,我得到了以下帮助:

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

}

我知道我可以使用这个:

-(UIView *)myView
{

}

但我只是好奇以前的方法是做什么的,为什么会存在等等。感谢您的帮助!

4

1 回答 1

5

如Key-Value Coding Programming Guide中所述,它被称为“Getter Indexed Accessors”

从文档中:

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

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

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

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

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

如果基准测试表明需要改进性能,您还可以实施-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];
}
于 2013-10-30T02:53:09.690 回答