zoukankan      html  css  js  c++  java
  • IOS 特定于设备的开发:获取额外的设备信息

    sysctl()和sysctlbyname()允许获取系统信息。这些标准的UNIX函数用于询问操作系统有关硬件和OS的详细信息。

    这些常量使你能够检查核心信息,比如系统的CPU频率,可用的内存量等。它引入了一个UIDevice类,用于搜集系统信息,并通过一系列方法调用返回它。

    每个型号都提供了独特的内置能力,准确知道你正在处理哪款iPhone有助于确定那个单元是否有可能支持诸如可访问性,GPS和磁力计之类的特性。

    #pragma mark sysctlbyname utils
    - (NSString *) getSysInfoByName:(char *)typeSpecifier
    {
        size_t size;
        sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);
        
        char *answer = malloc(size);
        sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
        
        NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];
    
        free(answer);
        return results;
    }
    
    - (NSString *) platform
    {
        return [self getSysInfoByName:"hw.machine"];
    }
    
    
    // Thanks, Tom Harrington (Atomicbird)
    - (NSString *) hwmodel
    {
        return [self getSysInfoByName:"hw.model"];
    }

    返回的是:

    2014-12-22 15:59:40.391 HelloWorld[2673:943598] Platform: iPhone5,4
    2014-12-22 15:59:40.393 HelloWorld[2673:943598] HWModel: N49AP
    #pragma mark sysctl utils
    - (NSUInteger) getSysInfo: (uint) typeSpecifier
    {
        size_t size = sizeof(int);
        int results;
        int mib[2] = {CTL_HW, typeSpecifier};
        sysctl(mib, 2, &results, &size, NULL, 0);
        return (NSUInteger) results;
    }
    
    - (NSUInteger) cpuFrequency
    {
        return [self getSysInfo:HW_CPU_FREQ];
    }
    
    - (NSUInteger) busFrequency
    {
        return [self getSysInfo:HW_BUS_FREQ];
    }
    
    - (NSUInteger) cpuCount
    {
        return [self getSysInfo:HW_NCPU];
    }
    
    - (NSUInteger) totalMemory
    {
        return [self getSysInfo:HW_PHYSMEM];
    }
    
    - (NSUInteger) userMemory
    {
        return [self getSysInfo:HW_USERMEM];
    }
    
    - (NSUInteger) maxSocketBufferSize
    {
        return [self getSysInfo:KIPC_MAXSOCKBUF];
    }

    查看磁盘空间

    - (NSNumber *) totalDiskSpace
    {
        NSDictionary *fattributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
        return [fattributes objectForKey:NSFileSystemSize];
    }
    
    - (NSNumber *) freeDiskSpace
    {
        NSDictionary *fattributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
        return [fattributes objectForKey:NSFileSystemFreeSize];
    }
  • 相关阅读:
    RabbitMQ架构面试题答不出来怎么办!大佬手绘架构图带你分分钟搞懂!
    【秋招必备】大数据面试题100道(2021最新版)
    【秋招必备】设计模式面试题(2021最新版)
    【秋招必备】TCP,UDP,Socket,Http网络编程面试题(2021最新版)
    3分钟带你玩转MySQL体系结构和查询原理!
    易车面试官:说说MySQL内存结构、索引、集群、底层原理!
    【秋招必备】Mybatis面试题(2021最新版)
    iOS-项目开发1
    ReactNatvie遇到的错误
    细节
  • 原文地址:https://www.cnblogs.com/haibosoft/p/4178434.html
Copyright © 2011-2022 走看看