在我的项目中启用了ARC,我在这个站点的帖子中发现Cocoa在主线程上为你创建了一个自动释放池,但是在后台线程上没有为你做任何事情。如果你要在没有使用NSOperation的情况下将某些东西放到后台线程上,你会想要将该线程包装在@autoreleasepool ARC memory leaks中我修改了我的代码,仍然有内存泄漏问题。请帮忙。
根据你的说法Bryan Chen我编辑了
现在在这里遇到问题
下一次修改
答案 0 :(得分:0)
将@autoreleasepool
放入您的第一个dispatch_async
(jsonParsingQueue)
答案 1 :(得分:0)
请注意,当您dispatch_async
一个块到主队列时,该块将在主线程上执行,因此已经有一个自动释放池。因此,现有代码中的自动释放池在不需要的地方是不必要的,并且应该移动它以便它将被分派的块的全部内容包含在jsonParsingQueue
中。
编辑:实际上,所有 GCD队列执行会自动拥有自动释放池,因此尽管创建一个额外的池以更好地控制内存使用会很有用,但它如果不这样做,不应该导致泄漏。我想你可能还有另一个问题。
请参阅此处以供参考:Do you need to create an NSAutoreleasePool within a block in GCD?