【发布时间】:2014-12-17 09:26:40
【问题描述】:
我描述问题的最简单方法是用一个小例子来展示。
//In a swift file
myObjectiveCObject.setCallbackBlock {(object: AnyObject!) -> Void in
var chunkOfMemory = //fill up var with memory stuff. Self is never referenced.
}
myObjectiveCObject.startParsing()
//In the objective-c class file
@property (nonatomic, copy) MyBlockType callbackBlock;
- (void)startParsing {
//loop around thousands of times calling
self.callbackBlock(someNewObject)
}
从每个闭包调用分配的内存直到我完成了 objective-c 对象之后才被释放。预期的行为肯定是在每次关闭调用后释放内存?
【问题讨论】:
-
没有。您的循环“数千次”将调用数千个该块,这些块将使用数千个相同的分配对象加载相同的变量数千次,并将数千个相同的帧推入堆栈。你是需要对记忆更加保守的人!
-
@CodaFi 从设计层面来看,我该如何解决这个问题?使用解析块非常优雅。有没有办法解决内存问题?
标签: ios objective-c xcode memory-management swift