我一直在尝试根据我在Crashlytics中看到的日志调试我的应用中的一些问题。我经常遇到日志崩溃。
libswiftCore.dylib -> swift_unknownRetain_n + 44
libswiftCore.dylib -> swift_unknownRelease + 24
在这两种情况下抛出的异常都是EXC_BAD_ACCESS KERN_INVALID_ADDRESS。
我在使用积木时大多看到它们。我知道这些是分段错误,但ARC不应该优雅地处理内存管理以防止这些错误吗?或者我错过了一些关键点?
答案 0 :(得分:0)
这次崩溃主要是由于内存泄漏造成的。当任何变量或对象试图访问受限制的内存时,会发生此崩溃。有时没有通知,我们将尝试访问已释放的对象(在这种情况下也可能发生崩溃)。是的,在大多数情况下, ARC 会照顾内存。你不用担心。如果您访问受限制的内存,请检查。
块问题: 你在这里找到了一个关键的东西使用块。是的,使用块时会出现这种错误。如果您使用具有对外部对象的强引用的块,该块也具有对该块的强引用,则将存在内存泄漏。当你的块试图访问另一个对象(第三个角色)时,你可能会认为所有都在同一范围内并且同时存在。但不幸的是,第三个角色可能会被解除分配。 (第3个角色的引用必须是弱的)