问题标签 [narc]
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.
iphone - 在 Objective-C 中是否需要在方法的末尾释放参数?
如果我有一个参数传递给一个方法,我需要在方法结束时释放参数吗?
objective-c - Objective C 内存泄漏
我正在为自己创建一个 Cocoa 应用程序,但我发现了一个问题。我有两个 NSTextFields,它们作为 nextKeyViews 相互连接。当我使用内存泄漏检测工具运行此应用程序并在这两个文本框之间切换一段时间,输入一些文本等时,我开始泄漏内存。它向我展示了 AppKit 库负责,泄漏的对象是 NSCFStrings ,负责的帧是[NSEvent charactersIgnoringModifiers]
and [NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
。我知道这是一个非常简短且不完整的描述,但是有人知道可能是什么问题吗?
另外,我不使用 GC,所以我release
在 controllers 中使用我的实例变量dealloc
。网点呢?因为IBOutlet
它只是 Interface Builder 的一个标记,实际上并没有任何意义,我也应该release
这样做吗?
objective-c - 为什么要在这个语句中释放 NSURLConnection 实例?
我在一本书中读到了这个。
在这个声明中,那个时候释放“连接”实例是否正确?释放后意味着这个 NSURLConnection 实例将被销毁,因为它的引用计数为 0 ,我们如何在释放这个实例后使这个连接操作工作?谢谢。
我认为我们应该在以下回调方法之一中释放它,对吧?
连接完成加载:
连接:didFailWithError:
objective-c - 超越 NARC:何时保留、何时分配、何时复制
我终于明白我是否必须释放一个对象,以及如何在一个简单的应用程序中保持我的保留计数尽可能低(通过知道该对象是否返回一个已经调用的额外“保留”)。因此,NARC 规则在这方面运作良好。
另一方面,我不知道是retain
(通常使用保留属性)还是仅使用assign
实例变量。那里有经验法则吗?我只知道两个:
- 如果我在我的类中创建了实例(例如,在 init 中),那么我应该保留它并在
dealloc
. - 代表被分配,而不是保留
但我不明白的是我是否应该保留从另一个实例传递过来的东西。我知道风险是保留计数下降到零,我只能拿着袋子(或留下许多额外的袋子和内存),但是......我应该如何组织我的应用程序以免发生这种情况?
我看过一些相关的问题,但没有一般性。
当我在这里时:添加到 aUIWindow
或UIView
我个人不保留的东西怎么办?如果他们的超级视图从所有超级视图中删除,“自然”保留的实例会被释放吗?