xcode - Swift 正确的自动释放池

标签 xcode swift nsdata autorelease

将图像加载到 TableView 单元格时,我遇到了严重的内存问题。使用 autoreleasepool 纠正问题的正确方法是什么?我尝试过:

for i in 0 ..< 5 {
    autoreleasepool {
        for j in 0 ..< 1000 {
            image = UIImage(data: data)
            dispatch_async(dispatch_get_main_queue(), {
                if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
                    // cellToUpdate.imageView?.image = image
                    cell.imageView!.image = image
                }
            })
        }
    }
}

最佳答案

我在代码中使用了这种结构,它将帮助您解决问题:

func tooManyPictures() {
    let file = pathForResourceInBundle

    for _ in 0 ..< 5 {
        autoreleasepool {
            for _ in 0 ..< 1000 {
                let image = NSImage(contentsOfFile: file)
            }
        }
    }
}

关于xcode - Swift 正确的自动释放池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29313387/

相关文章:

objective-c - 从 NSData 显示 NSImage

ios - NSData 与归档

xcode - iPhone SDK 是否包含用于 Mac OS X 开发的 Xcode?

objective-c - 我在我的 Cocoa 应用程序中添加了一个 WebView,它生成了一个错误

objective-c - 通过索引访问 NSMutableDictionary 中的对象

ios - 如何处理 SKShapeNode 子类中的触摸?

ios - 如何从 iPhone 上的 Watch 触发后台进程(触发器 : Watch)?

ios - 如何为 View 中的所有标签设置自定义字体?

string - Swift 无法使用类型为(名称 : String, String)的参数调用追加

ios - 在 iOS 上共享 PDF 文件