存储和访问静态NSArray

时间:2011-08-24 06:19:29

标签: objective-c ios

我有以下内容:

@implementation DataSource
+ (NSArray *)someData
{
  static NSArray *data = nil;
  if (!data) {
    data = [[NSArray arrayWithObjects:..., nil] retain];
  }
  return data;
}
@end

有没有办法从类自己访问类方法?

5 个答案:

答案 0 :(得分:2)

NSArray *array = [DataSource someData];

答案 1 :(得分:0)

NSArray *accessor = [DataSource someData];

+指的是class level access

答案 2 :(得分:0)

是。在像someData这样的类方法中,您可以调用另一个类方法,如

[self anotherClassMethod]. 

这里自我指的是阶级。

答案 3 :(得分:0)

可以使用类名调用静态方法。上面的静态方法返回类型NSArray所以我们可以在任何地方使用

NSArray  *Arr=[DataSource someData];

答案 4 :(得分:0)

在其他类方法中,您可以将其称为[self someData]。从类的实例中,您可以将其称为[[self class] someData](这具有子类可以覆盖它的良好属性,并且将根据需要自动使用它们的实现)。在课堂外,您可以将其称为[DataSource someData]

顺便说一下,如果这实际上是某些Cocoa或Cocoa Touch类的数据源,例如NS / UITableView,你应该将该类实现为单例而不是使类本身成为数据源,因为使用类因为数据源没有经过充分测试,并且随着程序的增长,实例变量的缺乏可能会变得很痛苦。