假设我有一个显示“披萨”图片的应用程序。假设我的应用程序模型只是一个包含 9 个不同披萨的 UIImage 的数组。
@property (nonatomic) NSArray *myPizzas;
该数组在第一个 View Controller 中创建,称为
FirstViewController
。 .此 View Controller 还显示前 3 个披萨图像。当用户点击屏幕上的一个按钮时,这个比萨数组被传送到第二个 View Controller (SecondViewController
),它显示接下来的 3 个比萨。最后,当用户点击屏幕上的最后一个按钮时,数组被传输到显示最后三个比萨饼的最终 View Controller (ThirdViewController
)。假设这就是应用程序所做的所有事情,并且每次新的 View Controller 被连接到时,它都会被推送到导航 Controller 堆栈上。
我的问题是,是否每个 View Controller 都有
strong
对数组的引用或者应该只是第一个有 strong
引用和最后两个 View Controller 有一个 weak
引用?最重要的是,为什么会这样?
最佳答案
@property (nonatomic, copy) NSArray * myPizzas;
你没看错——复制。如果类型是可复制的,
copy
(几乎)总是正确的选择——尤其是当类型是不可变的时。如果类型是不采用
NSCopying
的类型, 那么你会选择 strong
.没有好处或不需要使用
weak
引用。弱引用使程序对象的语义和所有权复杂化。在这里使用弱是完全没有必要的。很可能弱指针只会导致随着时间的推移增加维护。因此,您可以通过使用强引用来避免复杂性。
关于objective-c - 当我将模型从 ViewController 传输到 ViewController 时,我应该使用强指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11988353/