问题标签 [retain]

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 投票
3 回答
260 浏览

iphone - 是否有带有 setTitle(UIButton 类)的自动发布?

众所周知,setTitle 会自动保留作为参数传递的字符串。当需要更改按钮标题时,我想在设置新字符串之前必须释放当前(旧)字符串。我想知道最优雅的点缀方式是什么。

查看我的代码示例(这里,getPlayerHandFromGame 方法生成自动释放的字符串,这些字符串在调用 setTitle 时会保留):

这部分代码将被多次调用,因为按钮标题将被多次更新。我想在设置标题之前,我应该这样做:

为了释放不再使用的字符串(titleForState 返回一个指向 NSString 的指针)。

这是避免设备内存加载未使用字符串的正确方法吗?

非常感谢, Apple92

0 投票
1 回答
245 浏览

iphone - 使用 arrayWithContentsOfURL 时,许多保留放置在 NSURL 上

我正在从指向 plist 的 URL 创建一个 NSArray

我完全不知道为什么会发生这种情况。如果您需要更多信息,请告诉我。

0 投票
2 回答
450 浏览

sas - 在 SAS 中删除观察时如何进行保留操作?

问题是,如果 else 正在执行,S 的增量将无法完成。任何想法?

0 投票
2 回答
763 浏览

iphone - 处理 iPad 上的外部屏幕

好的,我认为我可能误解了在 iPad 上实现外部屏幕的正确方法,这让我很头疼。 由于这是一篇很长的帖子,我要做的是通过 VGA 创建并发送视图到外部屏幕,并在完成后移除屏幕。我遇到了保留计数问题,因此无法正常工作。

我有一个可以随时在 iPad 上调用的视图控制器。当这个视图加载时(它是一个遥控器,类似于 Keynote 演示文稿),我检查外部屏幕,然后创建一个窗口并将视图添加到额外的监视器。

在我的ipadViewController.h <-- 留在 iPad 上的视图

我有

(还有更多,但那是外部屏幕的东西)。

ipadViewController.m

所以我尝试在视图加载时做一些事情:

获取外部屏幕(如果可能)创建一个presentationViewController并将其添加到额外屏幕

要获得屏幕,我执行以下操作getExternalScreen:

并将视图发送给它createPresentationAndSendToWindow:

dealloc我尝试清理:


我遇到的问题是,当我关闭remoteViewController(它是模态的)时,释放后externalScreen保留计数 = 1,而 externalWindow 保留计数 = 2。

externalWindow release如果我不释放,由引起的崩溃就会消失presentationView(但后来我正在泄漏presentationView.

0 投票
4 回答
3328 浏览

iphone - 具有综合属性的 alloc + init - 是否会导致保留计数增加 2?

我已经看过以下代码段很多:

在标题中:

在实现文件中:

进而

我认为这项任务将 'bla' 的保留计数增加了 2;一次通过 alloc/init 调用,然后通过我们要求通过综合属性设置器发生的保留。

因此,我通常这样声明我的属性:

在标题中:

在实现文件中:

进而

如果我最初的假设是正确的 - 我很想知道是否有“正确”的方法来做到这一点,即属性的声明、初始化和内存管理?

0 投票
5 回答
1526 浏览

objective-c - 使用 alloc/retain/release 的可能场景?

我已经使用 ojective c 快一周了,我主要是一个 c++ 编码器。在我阅读了苹果的内存管理指南之后,我尝试将我在 c++ 中的内存使用风格带入客观的 c... 我试图总结这些场景,如果我按照这些说明进行操作,我想我不会犯内存错误。如果我错了,请告诉我:)

我会尽量不使用自动释放,个人来说,使用自动释放,在某些自动释放池被耗尽之前,可能总会有一些冗余内存。我只会使用 release,它确保我的应用程序在任何时候都使用最少的内存。

Apple 说的另一件事,我用我自己的话来描述的是:每次我添加一个保留/分配/复制时,我都应该在某个地方添加一个发布

以下是我总结的所有场景:

  1. 在同一个函数中:分配一个对象,使用它,然后释放

  2. 在类的init函数中,分配一个对象,在类的dealloc函数中,释放对象

  3. 当需要拥有一个指针时,应该在类的方法中保留一个输入指针(比如说方法 A),然后在类的dealloc函数中释放指针。

    我发现在objective c中使用retain的时机和在c/c++中使用memcpy的时机是一样的,所以我把retain当作“内存高效副本”

    如果输入的保留指针要设置为成员指针变量,则应先释放成员指针。所以在case[3]中,类的init中的alloc与方法A中的release配对,方法A中的retaindealloc中的release配对

  4. 返回一个指针作为返回值。老实说,当我使用 c++ 时,我从不做这样的事情。如果返回成员指针也没关系,因为有人会处理它:

    但是返回一个指向本地分配对象的指针真的很糟糕:

    有人可能会说我应该在这种情况下使用自动释放,但我只是想通过使用这个来绕过该解决方案:我只会返回成员指针,或者我不会返回指针,我只会对给定的输入指针进行操作。

    /li>

因此,如果我按照上面的内存使用说明进行操作,请告诉我是否有任何问题。

感谢:D

0 投票
2 回答
694 浏览

cocoa - NSMenuItem -setTarget:是否保留目标?

NSMenuItem -setTarget:它是否保留目标,还是应该明确保留它?

我在这方面看到了相互矛盾的文档。我知道 NSInvocation 中的 retainArguments,但我不确定这是否适用于 NSMenuItem,因为它不是从 NSInvocation 继承的。

0 投票
2 回答
612 浏览

ios - 保留数据成员和通知

只需要2个非常基本的说明。

1.

假设我有一个 A 类,它的成员声明如下:

在我的一种方法中,我想将 stringInstanceVariable 初始化为某个字符串。我是否需要保留它?

我应该打电话给:

或者

或者我应该打电话给:

2.

使用 interface builder ,例如,当我右键单击文本字段控件时,我会得到一个方法列表。这些到底是什么?我可以注册观察的通知?而且我知道我可以使用 IB 实现并连接它们,我只想知道是否以及如何在没有 IB 的情况下仅使用代码来做到这一点。也许我可以通过使用“addTarget:action:forControlEvent”来做到这一点。

但如果是这样的话,那么 Cocoa 中的事件和通知有什么区别呢?或与委托相比更合适。

0 投票
1 回答
561 浏览

objective-c - 使用 NSMutableArray 保留和自我

在我的 .h 文件中,我定义了一个 NSMutableArray *locationsArray,其属性如下

在我的 .m 文件中,我正在显示一个表格视图,它加载得很好,直到我尝试汇总时它因访问错误而崩溃。这是由于未保留位置数组。

这行代码解决了我在 .m 中的问题

这行代码也解决了同样的问题

我有几个问题需要澄清

  1. 这是设置此值的正确方法吗,我应该这样做alloc initalloc initwithArray
  2. 来自我理解的java世界self是这样的,或者至少我认为我做到了......目标C有什么不同,locationsArray没有self我添加保留就不会保留。

显然我得到了它的工作,但它花了一段时间,仍然有点困惑为什么。任何帮助,将不胜感激。

0 投票
2 回答
109 浏览

objective-c - 关于何时在 Objective-C 中发布的参考

我在 Objective-C 中遇到了一个反复出现的问题。我要么发布太多时间,要么不够。或者也许我没有保留足够的他们......

有人可以指出一个很好的参考资料,它会给我一个关于何时需要保留和释放的经验法则吗?

例如:

我记得在某处读到一些对象是预先保留的,所以我需要释放它们,但不保留它们。这些是哪些物体?

如果我分配一个对象并且只在该方法中需要它,我需要释放它吗?保留吗?

显然,如果我保留了一些东西,我需要释放它,但除此之外,我有点迷失了。