【问题标题】:Swift : [MyApp.MyClass retain]: message sent to deallocated instanceSwift:[MyApp.MyClass 保留]:发送到已释放实例的消息
【发布时间】:2015-03-20 20:20:18
【问题描述】:

我的应用程序出现以下崩溃。

[MyApp.MyClass retain]

老实说,我完全不知道该怎么处理这个问题。

这只发生在我的 swift 课上。我需要知道为什么会发生这种情况以及解决此问题的一般方法是什么。

这是我的 swift 代码(还有更多内容,但我可能不需要全部发布。

class MyClass  : NSObject, ApiDelegate, UIAlertViewDelegate  {

var apiClient : Api?


func initMyClass (authKey : NSString?) {

    apiClient = Api(authKey: authKey, debugMode:false)
    apiClient?.delegate = self

}

【问题讨论】:

  • 我们显然不想看到您的所有代码,但您需要构建尽可能小的示例来重现此行为(MCVE)。这里的代码还不够。
  • 顺便说一句,方法名称initMyClass 很好奇。您是否打算将其作为正确的init 方法(在这种情况下,您应该将initMyClass 替换为init)?你不是说它是init 方法,我不会以init 开头。
  • @Rob,好的,我会改变的。

标签: ios swift


【解决方案1】:

正如 Rob 所说,罪魁祸首似乎是以 init 开头但不是初始化程序的方法。似乎 Swift 在内存管理方面对这些方法做了一些奇怪的事情。

无论如何,在我自己的代码中,我将所有这些方法重命名为以 setup 而不是 init 开头,并且我没有再次收到“retain message sent to deallocated instance”错误。

Xcode 确实应该提供一个警告来帮助防止这个错误。

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2011-07-15
    相关资源
    最近更新 更多