objective-c - 当我将模型从 ViewController 传输到 ViewController 时,我应该使用强指针吗?

标签 objective-c ios automatic-ref-counting

假设我有一个显示“披萨”图片的应用程序。假设我的应用程序模型只是一个包含 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/

相关文章:

ios - 如何使用 makehuman、blender 和 PVRShaman 在 Cocos3d 中正确显示 3d 模型?

ios - PopoverPresentationController不会在触摸外部时被解雇

php - 在 Objective C 中从 URL 下载 JSON 的简单方法

ios - Firebase 模糊引用 "FIRMessagingAPNSTokenType... is ambiguous"

objective-c - 从您的应用程序内部调用 map 获取方向 - iOS 5 iOS 6

ios - 无法打开用户库中以前的应用程序版本创建的文件

ios - 递归 block 过早释放

ios - 多个UITableViewCells在点击时会做不同的事情

ios - objective-c : memory management with NSTimer objects

objective-c - 从 Objective-C : To ARC or not to ARC? 开始