问题标签 [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.
ios - 内存周期 = strong0 ^ strong1 指针;(强 1 == 弱)?@“是”:@“不是”
好吧,我想知道为什么在这种情况下会出现内存循环:
好吧,该块有一个指向 self 的强指针,因为在其中引用了 self 。我们强烈指向 myBlocks。但是为什么 myBlocks 有一个指向块的强指针呢?
objective-c - NSMutableDictionary 是否保持对我通过“setValue:forKey:”放入其中的对象的强引用?
NSMutableDictionary
根据 Apple 的文档,如果我通过该方法将对象添加到 an中setObject:forKey:
,字典将保持对它的强引用。
但是setValue:forKey:
方法呢?文档没有说明通过此方法添加的对象的引用类型。它和另一个一样吗?字典是否也保持对通过此方法添加的对象的强引用?
objective-c - Objective-C++ 和对象保留
考虑这个代码示例:
该object
变量永远不会被释放。您可以使用 Instruments 进行检查 --(id)init
调用内部会发生额外的保留计数器增量。
我永远不会期望 C++ 类中的属性很强大,这让我想知道 - 有没有办法让指向 Objective-C 对象的 c++ 属性变弱?
更新:
有一种方法可以避免这种情况,使用指向void
C++ 类的指针,而不是像这样NSObject*
在方法中初始化 C++ 类-(id)init
:
然而,问题仍然存在——有没有办法在 C++ 类中保存 Objective-C 类型但使它们变弱?
swift - 如何使用 Swift 以编程方式引用 UILabel 强引用?
使用 Swift,我有一个在 viewDidLoad 覆盖函数中以编程方式创建的 UILabel:
效果很好。
然后我试图更改覆盖函数中的文本viewDidAppear
。我收到 Build Failed 消息Use of unresolved identifier 'middleDate'
如果我使用界面生成器并将 UILabel 拖放到视图上,然后给它一个强大的参考,它会很好用。有没有办法用强引用引用以编程方式创建的对象?
还是我要这样做不正确?
这就是我在 ViewController.swift 上的内容:
我有一种感觉,有一种更好、更清洁的方法可以做到这一点。
ios - iOS 在具有强引用的视图控制器之间传递对象
我有一系列专门用于在导航堆栈中进行配置文件编辑的 VC。随着您深入,自定义对象userProfile被传入-prepareForSegue
。我的问题是在此配置中,所有 userProfiles 似乎都指向一个对象,如果在对当前配置文件进行更改后按下后退按钮,则父控制器中的配置文件也会更改。
每个 VC 都有一个在它的 .h 文件中声明的属性,如下所示:
其中 userProfile 是一个非常简单的类
正如我所看到的,解决方案在于让每个控制器都保存它自己的对象副本。我不确定如何正确实施它。这会解决我的问题吗?
如果是,我应该如何在我的自定义对象中实现 -copy 方法,因为它没有?
ios - iOS 中 self.timer = nil 与 [self.timer invalidate] 有什么区别?
谁能解释我self.timer=nil
vs [self.timer invalidate]
?
的内存位置究竟发生了什么self.timer
?
在我的代码中
不会停止计时器,但
停止计时器。
如果您需要我的代码,我也会更新。
ios - 推送的 ViewController 不会解除分配。哪个强参考持有它?
我有一个如下所示的 ViewController;
所有的代表都很弱,那还能有什么强参考呢?我无法理解,而且 ViewController 不会解除分配,这真的很糟糕。
class - Swift 类:引用循环
当我运行下面的程序时,它会产生分段错误。你能帮我弄清楚为什么吗?谢谢
c# - 是行动和功能作为强引用传递?
我在游戏类上有一个注册回调方法,当游戏关闭时,对象可以注册回调。
当游戏关闭时,我调用回调。
我的问题是,如果这些回调之一的所有者变为 null,因为怪物死亡或项目被设置为 null 等,我是否持有对回调所有者的强引用?如果是这样,提供注销方法是更好的做法还是应该将它们包装在 WeakReference 中?
引擎使用回调代替事件,因此我可以在玩家、怪物、战斗代码等中执行异步操作。所以我的很多对象都有这种 RegisterCallback 方法,并在对象内发生某些事件时调用回调。如果我持有一个强引用,我宁愿持有一个弱引用并自我清理,而不是依赖于正确取消注册的对象。该引擎提供了一个 API,允许第 3 方用户创建插件和注册回调。如果我可以在引擎本身内控制它,我不想依赖开发人员正确注销对象。
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]):