我希望这是一个简单而简短的答案的小问题; - )
(即)之间究竟有什么区别
NSData *htmlData = [NSURLConnection sendSynchronousRequest:self.request returningResponse:&response error:nil];
和
NSData *htmlData = [NSData dataWithData:[NSURLConnection sendSynchronousRequest:self.request returningResponse:&response error:nil]]
或者根本没有任何区别?如果重要,是的,我使用ARC。
非常感谢!
答案 0 :(得分:2)
没有一个简单而简短的答案:)
首先,您处理从URL连接返回的数据。
在第二部分中,您创建了该数据的副本 - 即“复制”顺便说一句,由于多种原因,实际上可能不是深层副本。
这种表现方式实际上可以双向,而且很多都很难回答,因为:
就个人而言,当我需要传递数据时,我更喜欢后者。原因是你应该将你的ivars声明为具有可变变体的类型(在这种情况下为NSMutableData
),并且你应该尽可能使用这些对象的不可变副本。一旦你的大部分实现通过复制处理这些类型的可变变体,那么你可以通过确保你处理的对象实际上是不可变的来实际 reduce 复制 - 不可变对象可以避免深度甚至浅拷贝时要求提供副本。
如果该数据不在其他地方传递,那么您可以在API返回NSMutableData
的实例时避免潜在的副本(即您可以安全地使用第一个)。