问题标签 [deinit]
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.
swift - 未调用空快速项目中的 deinit
如果我使用 xcode(6.3.2) 创建一个新的“单视图应用程序”项目,并且只向 ViewController 添加一个 deinit 函数。运行应用程序,关闭应用程序。Deinit 永远不会被调用!我用几个设备和模拟器对其进行了测试。
这是为什么?这是标准行为吗?我该怎么做才能让它发挥作用?
/* 编辑 */ 阅读评论后,我把这段代码放到我的 Viewcontroller 中。
现在我明白了
这是否意味着我必须在 viewDidDisappear 调用中手动清理我的对象,因为视图控制器的 deinit 函数不可靠?
ios - SKPaymentQueue.defaultQueue().removeTransactionObserver(self) 删除和添加
对,所以我在应用商店里有这个游戏叫做 misshapen,在我的游戏中,我有应用内购买,但我发现了一个错误,如果有人按下应用内购买按钮,然后进入主菜单,就会导致游戏崩溃(IAP 在选项屏幕上)如果用户然后返回选项并点击 IAP,游戏会崩溃,因为已经有一个交易观察者。
要解决我的问题,我需要的代码行是
但我不确定在哪里调用它,因为如果调用错误,那么它会提示用户将一直使用苹果登录屏幕。我的解决方法是调用它
这有效并解决了我的问题,但是当用户返回菜单时,用户会收到苹果登录屏幕的提示,我不想要这个!请帮帮我谢谢!!:)
ios - 为什么我在精灵套件游戏中做了任何事情,但内存突然增加和减少?
我正在使用精灵套件开发一个简单的游戏。当我在我的设备上运行游戏时,我开始在游戏、主场景和关卡场景之间切换场景。但是,游戏内存增加但意外增加了 5 倍,并自动降低实际关卡。我只是等待游戏场景,什么都不做。正如您在图中看到的那样。
我尝试以下方法来解决问题:
- 在 GamePlay 类中调用 deinit 方法,但在发生这种意外减少时它没有调用 deinit 方法。
- 使用仪器内存分配,但无法弄清楚任何事情。
我使用 Xcode 调试会话。你有什么建议?我怎么能理解为什么内存会以这种方式增加和减少?
我正在呈现这样的场景。
我认为问题可能在于定义属性。我不知道。所以我写了我的类属性。当我呈现 GamePlay 场景时,会发生这种增加。呈现关卡场景或主场景或游戏结束场景时,它不会增加。
swift - Swift 的 deinit 没有被调用
为什么我deinit
的不叫。100
一旦我能够做到这一点,我将提供赏金,并将奖励给帮助我解决这个问题的那个人......即使在解决问题之后我也会提供赏金。
非常重要的信息:
此代码调用 deinit
. 这是工作。因为行数是 0。但我需要有elements.count
。当我更改为这个时,deinit
不会调用。
编辑:
ios - 如何在 Swift 中正确清理 NSURLSession
我正在使用以下代码在类的 init 上创建一个 NSURLSession:
完成后,该类不会被取消初始化,并且任何未来上传的回调都将第一个类实例化为它们自己。上传完成后如何正确清理 NSURLSession?
我的整个班级可以在这里看到:
ios - SCNAction.removeFromParentNode 和 deinit 未调用
以下方法定义在 GKComponent 的类扩展中
...
最后一个动作是SCNAction.removeFromParentNode()
,在 moveAction 之后执行。
该节点已从图形场景中正确删除,但未调用相关节点的 deinit 并且我无法释放内存...
但是,如果我从序列中删除 moveAction ,则调用 deinit 。是bug??
func moveAlongNorthSouth() {
let sequence = SCNAction.sequence([SCNAction.removeFromParentNode()])
self.node!.runAction(sequence)
}
swift - UITableViewCell 对象 deinit 从未被调用
问题出在我的项目中。但我也在新的 xcode 草案项目中尝试了 Master-Detail Application 之一。
我创建了基本单元类并将单元映射到情节提要上。删除操作后 deinit 从未调用过。对单元格没有强或弱的任何引用。
ios - UISplitViewController:在折叠模式下Deinit DetailView
我已经为此苦苦挣扎了一段时间,但我无法找到解决方案:
我有一个 iOS 9 应用程序,它支持所有设备系列,使用尺寸等级并使用 Swift 2.0 进行编程。我正在使用 aUISplitViewController
并且一切都按我的意愿运行,除了在折叠的环境中(例如在 iPhone 上)。
Master-ViewController 是UITableViewController
在选择单元格时触发替换segue 的。在折叠的环境中,这意味着 detailViewcontroller 被推送到屏幕上。视觉上的UISplitViewController
行为有点像UINavigationController
. 但是,当我使用后退按钮或滑动手势关闭 detailViewController 时,它不会被释放,直到在 Master-ViewController 中触发新的替换 segue。
我认为这是 的一种功能UISplitViewController
,因为它最初旨在将两个内容彼此相邻显示。尽管如此,在一个折叠的环境中,我希望我UISplitViewController
的行为像一个简单的UINavigationController
,它在弹出时释放先前推送的 detailviewController。
在弹出 detailViewController 后,我一直在尝试手动更改 splitViewController 的viewControllers
属性:
但这无济于事。简单地将 detailViewController 替换为空的“Dummy”-ViewController 也不起作用,因为它会自动为过渡设置动画。玩弄UISplitViewControllerDelegate
也没有帮助我......
有没有解决方案(可能很简单?:)),我太盲目了,看不到?
ios - 我们可以在代码中使用取消初始化的变量,还是因为它们被立即释放而几乎没用?
在将其与 deinitaizlization 进行比较时,我对解除分配的主题有点困惑。在变量被取消初始化后不会发生释放......我的主要观点是,我们可以以某种方式使用/操作取消初始化的变量吗?或者它们几乎没用,因为释放发生在...之后?
ios - 我对在实例被取消初始化时如何操作实例内部的属性感到困惑?
我从 Apple 文档或 swift 书中得到了这个
当实例被取消初始化时,您仍然可以访问实例内部的属性,并且可以在实例完全消失之前根据需要操作它们。
我很困惑,他们的意思是当我们使用方法中的实例属性进行一些数学运算时deinit()
?或者说当我们打印string
属于特定实例的类型属性时,也来自deinit
() 方法?如果是这样,那么该deinit()
方法是在取消初始化时操作属性的唯一方法吗?