一、获取设备内存大小方法

//返回存储内存占用比例
- (NSString *)getFreeDiskspaceRate{ float totalSpace;
float totalFreeSpace=.f; NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];
if (dictionary) {
NSNumber *fileSystemSizeInBytes = [dictionary objectForKey: NSFileSystemSize];
NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
totalSpace = [fileSystemSizeInBytes floatValue]/1024.0f/1024.0f/1024.0f;
totalFreeSpace = [freeFileSystemSizeInBytes floatValue]/1024.0f/1024.0f/1024.0f; //totalString、freeString是定义两个全局变量 进度条上显示大小数据用
totalString = [self getFileSizeString:[fileSystemSizeInBytes floatValue]];
freeString = [self getFileSizeString:[freeFileSystemSizeInBytes floatValue]];
NSLog(@"打印totalString:%@,freeString:%@",totalString,freeString); NSLog(@"Memory Capacity of %.2f GB with %.2f GB Free memory available.", totalSpace, totalFreeSpace); } else {
NSLog(@"Error Obtaining System Memory Info: Domain = %@, Code = %@", [error domain], [error code]); }
NSString *freeStr = [NSString stringWithFormat:@"%.3f",(totalSpace-totalFreeSpace)/totalSpace];//进度条比例
return freeStr;
}

//补充:另一种获取内存大小的方法

首先导入#include <sys/param.h>和#include <sys/mount.h>

方法:

NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *fat = [fm attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
NSLog(@"容量:%lldG 可用容量:%lldG",[[fat objectForKey:NSFileSystemSize]longLongValue]/,[[fat objectForKey:NSFileSystemFreeSize]longLongValue]/);
struct statfs buf;
long long freespace = -;
if(statfs("/var", &buf) >= ){
freespace = (long long)(buf.f_bsize * buf.f_bfree);
}
NSLog(@"%@",[NSString stringWithFormat:@"手机剩余存储空间为:%qi GB" ,freespace///]);

二、转换内存大小为单位数值的方法(根据实际情况得到G、M、KB单位)

-(NSString *)getFileSizeString:(CGFloat)size
{
if (size>**){
return [NSString stringWithFormat:@"%.1fG",size///];//大于1G,则转化成G单位的字符串
}
else if(size<**&&size>=*)//大于1M,则转化成M单位的字符串
{
return [NSString stringWithFormat:@"%.1fM",size//];
}
else if(size>=&&size<*) //不到1M,但是超过了1KB,则转化成KB单位
{
return [NSString stringWithFormat:@"%.1fK",size/];
}
else//剩下的都是小于1K的,则转化成B单位
{
return [NSString stringWithFormat:@"%.1fB",size];
}
}

三、虚拟机上的效果图(这里截图显示的空间大小数值比较大,说明实际是电脑的内存情况,真机上显示就正常了)

四、其他

参考网址:http://www.bubuko.com/infodetail-922638.html

iOS 获取内存大小使用情况(进度条显示)的更多相关文章

  1. ios swift 实现饼状图进度条,swift环形进度条

    ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...

  2. 【Android】读取sdcard卡上的全部图片而且显示,读取的过程有进度条显示

    尽管以下的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,可是基本思想是这种. 例如以下图.在sdcard卡上有4张图片, 打开app,则会吧sd ...

  3. Qt flash_eraseall nandwrite 进度条显示擦除、烧录

    /***************************************************************************** * Qt flash_eraseall n ...

  4. MFC读写.txt文件时进度条显示实时进度

    整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条. 一.MFC进度条 Progress Control 相关函数 1. create() --创建Prog ...

  5. 【Winform】使用BackgroundWorker控制进度条显示进度

    许多开发者看见一些软件有进度条显示进度,自己想弄,项目建好后发现并没有自己想象中的那么简单...看了网上很多教程后,写了一个小Demo供网友们参考~~,Demo的网址:http://pan.baidu ...

  6. Ajax上传文件进度条显示

    要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...

  7. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  8. iOS获取网络图片大小

    在iOS开发过程中经常需要通过网络请求加载图片,有时,需要在创建UIImageView或UIButton来显示图片之前需要提前知道图片的尺寸,根据图片尺寸创建对应大小的控件.但是对于网络图片来说,要想 ...

  9. IOS中公布应用程序,进度条一直不走怎么处理

    在IOS中公布应用程序非常是喜闻乐见. 近期1周.我更新了6次版本号.可是时不时的会卡住,进度条不走. 最后总结了几个原因. 1.在公布前你要确认自己的证书是否配置正确 2.DNS域名server有没 ...

随机推荐

  1. mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. ->

    mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. -> TEST通过没有报错,但是最终部署到Nexus中时出现错误. 后 ...

  2. Struts2零碎点整理

    1. 关于 Struts2 请求的扩展名问题 1). org.apache.struts2 包下的 default.properties 中配置了 Struts2 应用的一些常量 2). struts ...

  3. Codeforces 599D Spongebob and Squares(数学)

    D. Spongebob and Squares Spongebob is already tired trying to reason his weird actions and calculati ...

  4. 新浪云sae 邮件服务 quicksend()

    <?php header("Content-Type: text/html;charset=utf-8"); $mail = new SaeMail(); $form_Con ...

  5. 关于INTRAWEB ISAPI DLL发布

    怎样将Stand Alone App变为ISAPI Dll? 一是将工程文件中的program改成library,二是将uses里的IWInitStandAlone改成IWInitISAPI,没有该文 ...

  6. 关闭Linux里边的selinux

    首先我们可以用命令来查看selinux的状态 getenforce   这个命令可以查看到selinux的状态,当前可以看到是关闭状态的.   还有一个命令也可以查看出selinux的状态. sest ...

  7. POJ 1502 MPI Maelstrom (Dijkstra)

    题目链接:http://poj.org/problem?id=1502 题意是给你n个点,然后是以下三角的形式输入i j以及权值,x就不算 #include <iostream> #inc ...

  8. C++库研究笔记——操作符重载实现类型转换&这样做的意义

    目标: 已知这个接口: std::vector<double> add_vec(double *d1, double *d2) { ..... return result; } 我们自定义 ...

  9. 代码静态分析工具——splint的学习与使用

    引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 ...

  10. linux使用getopt解析参数

    getopt是linux下解析命令行参数的api.以linux内核代码的一个例子来说明:   static void cmdline(int argc, char *argv[]){    int o ...