我正在捡起ObjC和Cocoa,这也是我第一次对编程进行一次严肃的尝试。初始方法与工厂方法
我遇到了在实例上调用的initWith方法和在类上调用的工厂方法之间的差异。
首先,他们为什么称为“工厂”方法,是否存在我称之为“InitWith”方法的适当术语?
其次,有什么功能差异?它只是内存管理含义(工厂方法返回一个自动释放对象)?
例如,[NSString stringWithString: (NSString*)aString]
和[[NSString alloc] initWithString: (NSString*)aString]
之间的实际区别是什么?
这适用于你,Rugluds和Audacitor:发送'initWithString:'消息时,不需要包含'(NSString *)'。只有方法的声明需要它(指定方法期望的类型)。当你将它作为消息的一部分加入时,你正在将'aString'值转换为'NSString *'。如果'aString'是'NSString *',那么这什么都不做,也是不必要的。如果它是别的东西,那么演员阵容仍然没有任何用处:它会关闭编译器,但是你会在运行时崩溃。 – 2010-07-18 03:15:08