如何使类的所有构造函数都是私有的并创建静态工厂方法?

时间:2014-02-26 14:50:02

标签: objective-c

在Java中,我会做以下事情:

final class Person {

  private Person() { }

  public static Person makeNewPerson() {

    Person p = new Person();
    // any initialization code...

    return p;

  }

}

在Objective-C中,我的第一次尝试是:

@interface Person : NSObject

// How to hide constructors here?

+ (Person *) makeNewPerson;

@end

@implementation Person

+ (Person *) makeNewPerson
{
  Person *p = [[Person alloc] init];
  // setup...

  return p;
}

@end

我想这样做的原因主要是因为我将拥有此类的许多实例,并且我想使用缓存来重用实例,而不是允许创建副本。

谢谢!

1 个答案:

答案 0 :(得分:1)

在objective-c中没有必要为方法创建声明。只创建实现,只需要使方法“私有”。

私有引号,因为无法制作真正的私有方法。