Determine if iOS device is 32- or 64-bit

前端 未结 7 572
清歌不尽
清歌不尽 2020-12-01 04:03

Does anyone know of an easy way to tell if an iOS7 device has 32- or 64-bit hardware? I don\'t mean programmatically, I just mean via settings, model number, 3rd-party app,

7条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-01 04:27

    Below is the method is64bitHardware. It returns YES if the hardware is a 64-bit hardware and works on a real iOS device and in an iOS Simulator. Here is source.

    #include 
    
    + (BOOL) is64bitHardware
    {
    #if __LP64__
        // The app has been compiled for 64-bit intel and runs as 64-bit intel
        return YES;
    #endif
    
        // Use some static variables to avoid performing the tasks several times.
        static BOOL sHardwareChecked = NO;
        static BOOL sIs64bitHardware = NO;
    
        if(!sHardwareChecked)
        {
            sHardwareChecked = YES;
    
    #if TARGET_IPHONE_SIMULATOR
            // The app was compiled as 32-bit for the iOS Simulator.
            // We check if the Simulator is a 32-bit or 64-bit simulator using the function is64bitSimulator()
            // See http://blog.timac.org/?p=886
            sIs64bitHardware = is64bitSimulator();
    #else
            // The app runs on a real iOS device: ask the kernel for the host info.
            struct host_basic_info host_basic_info;
            unsigned int count;
            kern_return_t returnValue = host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)(&host_basic_info), &count);
            if(returnValue != KERN_SUCCESS)
            {
                sIs64bitHardware = NO;
            }
    
            sIs64bitHardware = (host_basic_info.cpu_type == CPU_TYPE_ARM64);
    
    #endif // TARGET_IPHONE_SIMULATOR
        }
    
        return sIs64bitHardware;
    }
    

提交回复
热议问题