问题标签 [dealloc]
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 - 应用程序批准是否需要 super dealloc
如果我不在[super dealloc]
课堂上使用,我的 iPhone 应用程序会被批准吗?
在这里我调用下一个视图控制器。
}
这是dealloc
但在这种情况下,dealloc 从不调用,我必须手动释放视图,如果我手动执行,我会崩溃super dealloc
iphone - Apple 建议在“viewDidUnload”中清除对象的解释?
我会对任何可以提供更多关于以下 Apple 建议的信息的人感兴趣(在核心数据教程中找到)在“viewDidUnload”中删除对象。例如:
- 为什么这很重要?释放一个 nil'ing 有什么不同?
- 这是最佳做法吗/我没有这样做过,也没有看到我在我看过的一些 iPhone 示例代码中没有想到的?
代码:
iphone - 目标 C:子类化,覆盖 dealloc
我正在创建自定义 UITableViewCell 的子类。超类有一些在 dealloc 方法中释放的属性。我在我的子类中添加了一个额外的属性,所以我确保重写 dealloc 方法并释放我的新属性。
我的问题是,既然我覆盖了dealloc方法,那么在超类dealloc方法中释放的属性是否不会被释放(我正在调用[super dealloc])?我是否需要在我的 dealloc 方法中专门释放那些?
ios - 关于iOS内存管理的问题
我有一个关于内存管理的问题。我有一个我之前在 init* 方法中分配的实例变量。在我的程序中,我保留了这个对象。在我的 dealloc 方法中,如果我将此对象设置为 nil,他会被正确地释放吗?让我举个例子。这是 Ah 类:
和他的实现:
我的问题是当 GC 将在 A 类上调用dealloc时, bvrariable会被正确释放吗?
我的猜测是否定的,因为我保留了这个对象,所以我必须调用release两次来释放那个对象。将对象设置为 nil 不会释放它们,因为我仍然向 bvrariable 对象发送消息。但有人告诉我相反。
有人可以启发我吗?
谢谢你的建议 !!
ipad - UIPopoverController 释放问题
我使用 Popover 在其中显示图像。当用户触摸一个按钮时,弹出框会出现,里面有一个幻灯片。
我像这样初始化 Popover:`
` detailViewPopover 是一个 UIPopoverController,我将它声明为我的 .h。
我像这样解雇 Popover:`
}`
当我运行我的应用程序时,它一直有效,直到我收到“-[UIPopoverController release]: message sent to deallocated instance 0x1b29b0”并且我的应用程序崩溃......我知道我释放了太多时间我的 UIPopoverController,但我不知道在哪里。我的实施好吗?
谢谢你的帮助
如果您需要更多信息,请告诉我,我将编辑帖子
objective-c - 在 dealloc 中使用 self.property = nil 有什么问题吗?
我知道声明的属性会生成访问器方法,这在某种程度上只是语法糖。
我发现很多人self.property = nil
在他们的dealloc
方法中使用。
1)在苹果的内存管理文档中,p23 说:
唯一不应该使用访问器方法来设置实例变量的地方是 init 方法和 dealloc。
为什么不应该?
2) 在苹果的Objective-C 2.0中,p74
声明的属性从根本上代替了访问器方法的声明;当你合成一个属性时,编译器只创建任何不存在的访问器方法。与该
dealloc
方法没有直接交互——属性不会自动为您释放。然而,声明的属性确实提供了一种交叉检查方法实现的有用dealloc
方法:您可以在头文件中查找所有属性声明,并确保释放未标记assign
的对象属性,并且assign
未释放标记的对象属性。注意:通常在
dealloc
方法中,您应该release
直接对象实例变量(而不是调用 set 访问器并nil
作为参数传递),如下例所示:
但是,如果您正在使用现代运行时并合成实例变量,则无法直接访问实例变量,因此您必须调用访问器方法:
注释是什么意思?
我发现[property release];
并且[self setProperty:nil];
两者都有效。
objective-c - NSTableViewDataSource在objective-c中的dealloc
我目前正在学习objective-c,并且正在使用NSTableView 进行培训。
这是我的问题:
我已经通过 Interface Builder 将我的 tableview 链接到我的控制器,以便它有一个数据源,我已经在我的控制器中实现了 NSTableViewDataSource 协议,并且我已经实现了-(NSInteger) numberOfRowsInTableView:
和-(id) tableView:objectValueForTableColumn:row:
方法。
我创建了一个原始业务类(“人”),并成功地将其内容显示到我的 NSTableView 中。
但是后来,我NSLog
在我的 dealloc 方法中放了一些来查看内存是否被释放,似乎我的数组以及我的“人”实例永远不会被释放。
这是我在控制器中的 dealloc 代码:
在我的“人”课上
什么时候应该在应用程序生命周期中调用这些 dealloc?因为我希望他们在窗口关闭时被调用,但它没有。
希望足够清楚,
谢谢 :)
风筝。
objective-c - 是否需要在 dealloc 中将 outlets 变量设置为 nil(即使在 IOS 3.0 之后)?
在苹果的 <内存管理> 文档中谈到 Outlets 时。
它说
在您的自定义视图控制器类中,您可以实现 viewDidUnload 以调用您的访问器方法将出口设置为零。
我可以理解这一点,因为在这种情况下调用访问器方法来设置 nil 将释放对象并将指针设置为 nil 可以防止访问可能导致崩溃的无效点。
但在那之后,它说:
注意:在 3.0 之前的 iOS 上,viewDidUnload 方法不可用。相反,您应该在 setView: 中将 outlets 设置为 nil,如下例所示:
另外,由于UIViewController中dealloc实现的一个细节,dealloc中还需要设置outlet变量为nil:
1)为什么即使在dealloc中我们也需要设置nil?(我认为 dealloc 是对象生命周期的最后一步,没有其他人可以通过这个对象访问出口。)
2)iOS 3.0 或更高版本还需要设置 nil 吗?(我发现 Xcode 自动生成的代码不会将 nil 设置为出口变量,只释放它们。)
iphone - 在 dealloc 中保存对象状态不起作用
我刚才注意到,当我在我的 dealloc 方法中保存对象状态( @public float
s 转换为s )时,使用NSString
保存了错误的值!?如果我在发布之前保存值,则会保存正确的值。请注意,我[super dealloc];
在最后调用时很小心。为什么是这样?
objective-c - NSTimer 在 UIView 中禁用 dealloc
释放 someview 不会调用 dealloc 并且计时器会继续运行。
如果我注释掉“timer = [NSTimer schedule....”部分,将调用 dealloc。这意味着我的代码的所有其他部分都可以正常工作,而计时器是罪魁祸首。runTimer 方法是空的,这意味着它只是在搞乱我的计时器。