【发布时间】:2014-03-13 18:04:20
【问题描述】:
我知道一些 C++,现在我也将尝试学习 Objective-C。我的书简单地提到了类方法,并说类方法是可以发送给类的消息,通常用于创建类的实例。
这是否意味着类方法有点像 C++ 中的构造函数?就我而言,我有一个带有 Deck 类的纸牌游戏(目前在 C++ 中)。当我创建它的一个实例时,我会这样做:
Deck deckWithCards(52); // A deck with 52 cards with values
Deck deckWithoutCards; // An empty deck
如果我要在 Objective-C 中做同样的事情,这样做是否被认为是好的“风格”:
Deck *deckWithCards = [Deck newDeck:52]; // A deck with 52 cards with values
Deck *deckWithoutCards = [Deck newDeck]; // An empty deck
我是否正确理解了类方法?类方法还有其他用途吗?
【问题讨论】:
-
-
ObjC 类方法和 C++ 静态成员函数有时用于创建“工厂”函数,这就是您所描述的。工厂函数是一个函数,其目的是为您提供一个对象......它是对象工厂。当涉及构造函数时,工厂函数会调用它(可能基于您提供的输入)。在 C++ 中,直接调用构造函数类似于使用工厂函数的模式,但由于构造函数不分配对象,所以它不是工厂。
-
你可以这样做,但是请不要这样做!工厂方法作为快捷方式很好,但通常您应该使用
[[object alloc] init]语法。如果你想这样缩短,你可以使用已经为你提供的类方法new。不要重新发明轮子。
标签: c++ objective-c class methods constructor