以编程方式查找iOS设备的市场内存大小

时间:2013-01-15 04:12:27

标签: iphone ios objective-c

有没有办法以编程方式(在Objective-C中)找出iOS设备(如iPad 2 16G,32G,64G)的市场总物理内存?看起来UIDevice相关的API(例如讨论的herehere)不会提供此类信息。

谢谢!

2 个答案:

答案 0 :(得分:3)

请参阅here。您可以获得设备总空间以及可用空间。 它给你一个清晰的想法。

答案 1 :(得分:2)

派对有点晚了,但如果还有人来到这里,那你去吧:

此版本为您提供在iOS设备上销售的内存大小(16GB,32GB,64GB,128GB ......)

使用其他人建议的方法计算,然后四舍五入到最接近的2的更大幂。

Swift 3.0版本

extension UIDevice {

var marketedMemorySize: Int {

    do {
        let systemAttributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String)
        let totalDiskSpaceInBytes = (systemAttributes[FileAttributeKey.systemSize] as? NSNumber)?.int64Value

        func formatter(_ bytes: Int64) -> String {
            let formatter = ByteCountFormatter()
            formatter.allowedUnits = ByteCountFormatter.Units.useGB
            formatter.countStyle = ByteCountFormatter.CountStyle.decimal
            formatter.includesUnit = false
            return formatter.string(fromByteCount: bytes) as String
        }

        if let bytes = totalDiskSpaceInBytes {
            let memory = formatter(bytes)

            if let floatMemory = Float(memory) {

                if floatMemory > 128 {
                    return 256
                } else if floatMemory > 64 {
                    return 128
                } else if floatMemory > 32 {
                    return 64
                } else if floatMemory > 16 {
                    return 32
                } else if floatMemory > 8 {
                    return 16
                } else if floatMemory > 4 {
                    return 8
                }

            }
        }
        return 0
    }
    catch {
        return 0
    }

}


}

像这样使用:

UIDevice.current.marketedMemorySize