问题标签 [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.
iphone - 是否有带有 setTitle(UIButton 类)的自动发布?
众所周知,setTitle 会自动保留作为参数传递的字符串。当需要更改按钮标题时,我想在设置新字符串之前必须释放当前(旧)字符串。我想知道最优雅的点缀方式是什么。
查看我的代码示例(这里,getPlayerHandFromGame 方法生成自动释放的字符串,这些字符串在调用 setTitle 时会保留):
这部分代码将被多次调用,因为按钮标题将被多次更新。我想在设置标题之前,我应该这样做:
为了释放不再使用的字符串(titleForState 返回一个指向 NSString 的指针)。
这是避免设备内存加载未使用字符串的正确方法吗?
非常感谢, Apple92
iphone - 使用 arrayWithContentsOfURL 时,许多保留放置在 NSURL 上
我正在从指向 plist 的 URL 创建一个 NSArray
我完全不知道为什么会发生这种情况。如果您需要更多信息,请告诉我。
sas - 在 SAS 中删除观察时如何进行保留操作?
问题是,如果 else 正在执行,S 的增量将无法完成。任何想法?
iphone - 处理 iPad 上的外部屏幕
好的,我认为我可能误解了在 iPad 上实现外部屏幕的正确方法,这让我很头疼。 由于这是一篇很长的帖子,我要做的是通过 VGA 创建并发送视图到外部屏幕,并在完成后移除屏幕。我遇到了保留计数问题,因此无法正常工作。
我有一个可以随时在 iPad 上调用的视图控制器。当这个视图加载时(它是一个遥控器,类似于 Keynote 演示文稿),我检查外部屏幕,然后创建一个窗口并将视图添加到额外的监视器。
在我的ipadViewController.h
<-- 留在 iPad 上的视图
我有
(还有更多,但那是外部屏幕的东西)。
在ipadViewController.m
:
所以我尝试在视图加载时做一些事情:
获取外部屏幕(如果可能)创建一个presentationViewController
并将其添加到额外屏幕
要获得屏幕,我执行以下操作getExternalScreen:
:
并将视图发送给它createPresentationAndSendToWindow:
:
在dealloc
我尝试清理:
我遇到的问题是,当我关闭remoteViewController
(它是模态的)时,释放后externalScreen
保留计数 = 1,而 externalWindow 保留计数 = 2。
externalWindow release
如果我不释放,由引起的崩溃就会消失presentationView
(但后来我正在泄漏presentationView
.
iphone - 具有综合属性的 alloc + init - 是否会导致保留计数增加 2?
我已经看过以下代码段很多:
在标题中:
在实现文件中:
进而
我认为这项任务将 'bla' 的保留计数增加了 2;一次通过 alloc/init 调用,然后通过我们要求通过综合属性设置器发生的保留。
因此,我通常这样声明我的属性:
在标题中:
在实现文件中:
进而
如果我最初的假设是正确的 - 我很想知道是否有“正确”的方法来做到这一点,即属性的声明、初始化和内存管理?
objective-c - 使用 alloc/retain/release 的可能场景?
我已经使用 ojective c 快一周了,我主要是一个 c++ 编码器。在我阅读了苹果的内存管理指南之后,我尝试将我在 c++ 中的内存使用风格带入客观的 c... 我试图总结这些场景,如果我按照这些说明进行操作,我想我不会犯内存错误。如果我错了,请告诉我:)
我会尽量不使用自动释放,个人来说,使用自动释放,在某些自动释放池被耗尽之前,可能总会有一些冗余内存。我只会使用 release,它确保我的应用程序在任何时候都使用最少的内存。
Apple 说的另一件事,我用我自己的话来描述的是:每次我添加一个保留/分配/复制时,我都应该在某个地方添加一个发布。
以下是我总结的所有场景:
在同一个函数中:分配一个对象,使用它,然后释放它
在类的init函数中,分配一个对象,在类的dealloc函数中,释放对象
当需要拥有一个指针时,应该在类的方法中保留一个输入指针(比如说方法 A),然后在类的dealloc函数中释放指针。
我发现在objective c中使用retain的时机和在c/c++中使用memcpy的时机是一样的,所以我把retain当作“内存高效副本”
如果输入的保留指针要设置为成员指针变量,则应先释放成员指针。所以在case[3]中,类的init中的alloc与方法A中的release配对,方法A中的retain与dealloc中的release配对
返回一个指针作为返回值。老实说,当我使用 c++ 时,我从不做这样的事情。如果返回成员指针也没关系,因为有人会处理它:
但是返回一个指向本地分配对象的指针真的很糟糕:
有人可能会说我应该在这种情况下使用自动释放,但我只是想通过使用这个来绕过该解决方案:我只会返回成员指针,或者我不会返回指针,我只会对给定的输入指针进行操作。
/li>
因此,如果我按照上面的内存使用说明进行操作,请告诉我是否有任何问题。
感谢:D
cocoa - NSMenuItem -setTarget:是否保留目标?
NSMenuItem -setTarget:它是否保留目标,还是应该明确保留它?
我在这方面看到了相互矛盾的文档。我知道 NSInvocation 中的 retainArguments,但我不确定这是否适用于 NSMenuItem,因为它不是从 NSInvocation 继承的。
ios - 保留数据成员和通知
只需要2个非常基本的说明。
1.
假设我有一个 A 类,它的成员声明如下:
在我的一种方法中,我想将 stringInstanceVariable 初始化为某个字符串。我是否需要保留它?
我应该打电话给:
或者
或者我应该打电话给:
2.
使用 interface builder ,例如,当我右键单击文本字段控件时,我会得到一个方法列表。这些到底是什么?我可以注册观察的通知?而且我知道我可以使用 IB 实现并连接它们,我只想知道是否以及如何在没有 IB 的情况下仅使用代码来做到这一点。也许我可以通过使用“addTarget:action:forControlEvent”来做到这一点。
但如果是这样的话,那么 Cocoa 中的事件和通知有什么区别呢?或与委托相比更合适。
objective-c - 使用 NSMutableArray 保留和自我
在我的 .h 文件中,我定义了一个 NSMutableArray *locationsArray,其属性如下
在我的 .m 文件中,我正在显示一个表格视图,它加载得很好,直到我尝试汇总时它因访问错误而崩溃。这是由于未保留位置数组。
这行代码解决了我在 .m 中的问题
这行代码也解决了同样的问题
我有几个问题需要澄清
- 这是设置此值的正确方法吗,我应该这样做
alloc
init
吗alloc initwithArray
? - 来自我理解的java世界
self
是这样的,或者至少我认为我做到了......目标C有什么不同,locationsArray
没有self
我添加保留就不会保留。
显然我得到了它的工作,但它花了一段时间,仍然有点困惑为什么。任何帮助,将不胜感激。
objective-c - 关于何时在 Objective-C 中发布的参考
我在 Objective-C 中遇到了一个反复出现的问题。我要么发布太多时间,要么不够。或者也许我没有保留足够的他们......
有人可以指出一个很好的参考资料,它会给我一个关于何时需要保留和释放的经验法则吗?
例如:
我记得在某处读到一些对象是预先保留的,所以我需要释放它们,但不保留它们。这些是哪些物体?
如果我分配一个对象并且只在该方法中需要它,我需要释放它吗?保留吗?
显然,如果我保留了一些东西,我需要释放它,但除此之外,我有点迷失了。