问题标签 [strong-references]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
37 浏览

ios - 内存周期 = strong0 ^ strong1 指针;(强 1 == 弱)?@“是”:@“不是”

好吧,我想知道为什么在这种情况下会出现内存循环:

好吧,该块有一个指向 self 的强指针,因为在其中引用了 self 。我们强烈指向 myBlocks。但是为什么 myBlocks 有一个指向块的强指针呢?

0 投票
2 回答
1379 浏览

objective-c - NSMutableDictionary 是否保持对我通过“setValue:forKey:”放入其中的对象的强引用?

NSMutableDictionary根据 Apple 的文档,如果我通过该方法将对象添加到 an中setObject:forKey:,字典将保持对它的强引用。

但是setValue:forKey:方法呢?文档没有说明通过此方法添加的对象的引用类型。它和另一个一样吗?字典是否也保持对通过此方法添加的对象的强引用?

0 投票
1 回答
876 浏览

objective-c - Objective-C++ 和对象保留

考虑这个代码示例:

object变量永远不会被释放。您可以使用 Instruments 进行检查 --(id)init调用内部会发生额外的保留计数器增量。

我永远不会期望 C++ 类中的属性很强大,这让我想知道 - 有没有办法让指向 Objective-C 对象的 c++ 属性变弱?

更新: 有一种方法可以避免这种情况,使用指向voidC++ 类的指针,而不是像这样NSObject*在方法中初始化 C++ 类-(id)init

然而,问题仍然存在——有没有办法在 C++ 类中保存 Objective-C 类型但使它们变弱?

0 投票
1 回答
1180 浏览

swift - 如何使用 Swift 以编程方式引用 UILabel 强引用?

使用 Swift,我有一个在 viewDidLoad 覆盖函数中以编程方式创建的 UILabel:

效果很好。

然后我试图更改覆盖函数中的文本viewDidAppear。我收到 Build Failed 消息Use of unresolved identifier 'middleDate'

如果我使用界面生成器并将 UILabel 拖放到视图上,然后给它一个强大的参考,它会很好用。有没有办法用强引用引用以编程方式创建的对象?

还是我要这样做不正确?


这就是我在 ViewController.swift 上的内容:

我有一种感觉,有一种更好、更清洁的方法可以做到这一点。

0 投票
0 回答
410 浏览

ios - iOS 在具有强引用的视图控制器之间传递对象

我有一系列专门用于在导航堆栈中进行配置文件编辑的 VC。随着您深入,自定义对象userProfile被传入-prepareForSegue。我的问题是在此配置中,所有 userProfiles 似乎都指向一个对象,如果在对当前配置文件进行更改后按下后退按钮,则父控制器中的配置文件也会更改。

每个 VC 都有一个在它的 .h 文件中声明的属性,如下所示:

其中 userProfile 是一个非常简单的类

正如我所看到的,解决方案在于让每个控制器都保存它自己的对象副本。我不确定如何正确实施它。这会解决我的问题吗?

如果是,我应该如何在我的自定义对象中实现 -copy 方法,因为它没有?

0 投票
3 回答
2737 浏览

ios - iOS 中 self.timer = nil 与 [self.timer invalidate] 有什么区别?

谁能解释我self.timer=nilvs [self.timer invalidate]

的内存位置究竟发生了什么self.timer

在我的代码中

不会停止计时器,但

停止计时器。

如果您需要我的代码,我也会更新。

0 投票
2 回答
252 浏览

ios - 推送的 ViewController 不会解除分配。哪个强参考持有它?

我有一个如下所示的 ViewController;

所有的代表都很弱,那还能有什么强参考呢?我无法理解,而且 ViewController 不会解除分配,这真的很糟糕。

0 投票
2 回答
74 浏览

class - Swift 类:引用循环

当我运行下面的程序时,它会产生分段错误。你能帮我弄清楚为什么吗?谢谢

0 投票
0 回答
406 浏览

c# - 是行动和功能作为强引用传递?

我在游戏类上有一个注册回调方法,当游戏关闭时,对象可以注册回调。

当游戏关闭时,我调用回调。

我的问题是,如果这些回调之一的所有者变为 null,因为怪物死亡或项目被设置为 null 等,我是否持有对回调所有者的强引用?如果是这样,提供注销方法是更好的做法还是应该将它们包装在 WeakReference 中?

引擎使用回调代替事件,因此我可以在玩家、怪物、战斗代码等中执行异步操作。所以我的很多对象都有这种 RegisterCallback 方法,并在对象内发生某些事件时调用回调。如果我持有一个强引用,我宁愿持有一个弱引用并自我清理,而不是依赖于正确取消注册的对象。该引擎提供了一个 API,允许第 3 方用户创建插件和注册回调。如果我可以在引擎本身内控制它,我不想依赖开发人员正确注销对象。

0 投票
1 回答
759 浏览

ios - 打破 Managed Object 和 Collectionview Cell 之间的强引用循环

更新 :

与 Core Data 或 CollectionView 无关。我从未解雇持有 CollectionView 的 ViewController。更多在下面的答案中!


我在 Swift iOS 中有内存泄漏。首先我认为它位于我的 fetch 函数中,但后来我尝试了一些不同的东西。我在各个地方断开了我UICollectionViewCell和我之间的联系。Managed Object我正在获取图像。因此,我将获取的结果替换为随机图像资产,该图像资产添加到数组中的次数与结果相同。这总是解决我的泄漏问题。所以现在我知道这在我的 fetch 函数中没有问题,在通往 Cell 的路上的任何其他函数。

经过一番谷歌搜索后,我发现 Core Data 倾向于自行创建强大的引用循环。但我不认为是这样。如果是这样,那么我不在 Cell 中使用生成的图像数组也没关系。我应该仍然有泄漏,但是当我没有将核心数据中的图像连接到单元时,我没有泄漏。

我不明白的是为什么我首先会泄漏。我认为数组像值一样工作,而不是引用。因此,将从核心数据加载的图像放入数组中应该像副本一样工作,并且不应该有任何强引用循环......

我还发现刷新具有图像二进制数据属性的托管对象并不能解决问题。

那我现在该怎么办?我需要删除所有单元格吗?我是否需要从 Core Data 的 NSData 中制作 UIImages(看了一些说 Strings 像值一样工作但 NSStrings 没有,所以也许 NSData 东西像参考一样工作)?我是否需要找到一种方法来刷新对象的属性?...

谢谢!

Fetch(也尝试将事物设置为weak,不起作用):

UICollectionViewCell :

单元格中的输入图像(thumbs 是一个变量数组 => [NSData]):