Objective-C中工厂方法的性能

Objective-C中工厂方法的性能,objective-c,memory-management,nsautoreleasepool,Objective C,Memory Management,Nsautoreleasepool,以下两段代码在性能方面是否存在差异 NSString* str = [[NSString alloc] initWithFormat:@"%i", 10]; // Do something with |str|. [str release]; NSAutorelasePool* pool = [[NSAutreleasePool alloc] init]; NSString* str = [NSString stringWithFormat:@"%i", 10]; // Do somethin

以下两段代码在性能方面是否存在差异

NSString* str = [[NSString alloc] initWithFormat:@"%i", 10];
// Do something with |str|.
[str release];

NSAutorelasePool* pool = [[NSAutreleasePool alloc] init];
NSString* str = [NSString stringWithFormat:@"%i", 10];
// Do something with |str|.
[pool drain];
我看到人们尽可能建议使用工厂方法。 尽快释放对象不是比在池被耗尽时更好吗。
我认为第一种类型在某些情况下非常有效,例如在紧循环中。

是的。第一个是更好的内存管理,如果您像您所说的那样在循环中这样做,那么它是值得的,以避免在下一个池耗尽之前分配大量内存

我看到有人试图建议使用 工厂方法可行

我猜这是因为它基本上是一样的,但你不必记得释放对象。有些人可能会说,使用便利方法也更具可读性,特别是因为您不必在每个方法的末尾都添加一系列的发布消息

将对象作为对象发布不是更好吗 尽快,而不是在 游泳池的水排干了

在某些情况下,例如在循环内,可以这样做。这通常不是一个重要的考虑,尽管。。。许多方法根本不循环,只创建少数对象

我会看到第一种是非常有趣的 在某些情况下有效,例如在 紧密循环

当然。因此,您应该知道何时适合自动释放对象,何时不适合自动释放对象,并且应该相应地编写代码。但这并不意味着你应该总是避免自动删除对象,就像总是尝试使用方便的方法一样