iOS _查询所剩内存和所剩存储空间的方法

来源:互联网 发布:乌克丽丽有什么软件 编辑:程序博客网 时间:2024/06/05 16:45
#import "NeiCunViewController.h"// 查询剩余内存导入头文件#import <sys/sysctl.h>#import <mach/mach.h>// 查询所剩存储空间导入头文件#import <sys/param.h>#import <sys/mount.h>@interface NeiCunViewController ()@end@implementation NeiCunViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.    [self addSubViews];}- (void)addSubViews{    self.view.backgroundColor = [UIColor whiteColor];    NSLog(@"手机目前所剩内存空间为 : %f MB", [self availableMemory]);    NSLog(@"手机目前应用所占内存为 : %f MB", [self usedMemory]);    NSLog(@"手机目前剩余存储空间为 : %@ MB", [self freeDiskSpaceInBytes]);}#pragma mark -- 获取目前手机所剩存储空间- (NSString *) freeDiskSpaceInBytes{    struct statfs buf;    long long freespace = -1;    if(statfs("/var", &buf) >= 0){        freespace = (long long)(buf.f_bsize * buf.f_bfree);    }    return [NSString stringWithFormat:@"%qi" ,freespace/1024/1024];}#pragma mark --  获取当前设备可用内存(单位:MB)- (double)availableMemory{    vm_statistics_data_t vmStats;    mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;    kern_return_t kernReturn = host_statistics(mach_host_self(),                                               HOST_VM_INFO,                                               (host_info_t)&vmStats,                                               &infoCount);    if (kernReturn != KERN_SUCCESS) {        return NSNotFound;    }    return ((vm_page_size *vmStats.free_count) / 1024.0) / 1024.0;}#pragma mark -- 获取当前任务所占用的内存(单位:MB)- (double)usedMemory{    task_basic_info_data_t taskInfo;    mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;    kern_return_t kernReturn = task_info(mach_task_self(),                                         TASK_BASIC_INFO,                                         (task_info_t)&taskInfo,                                         &infoCount);    if (kernReturn != KERN_SUCCESS        ) {        return NSNotFound;    }    return taskInfo.resident_size / 1024.0 / 1024.0;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}
0 0