`
woainike
  • 浏览: 79855 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

iPhone开发技巧之环境篇--- 区分不同版本的iPhone

 
阅读更多

执行环境

 

可以从 UIDevice 的属性 model 得到在现在执行的环境。例子如下:

 

 

NSString *modelname = [[UIDevice currentDevice]model];

if ([modelname isEqualToString:@"iPhone"]) {

  // iPhone

}

if ([modelname isEqualToString:@"IPod Touch"]) {

  // iPod touch

}

if ([modelname isEqualToString:@"iPhone Simulator"]) {

  // iPhone Simulator

}

iPhone 机器版本

 

可以通过 uname 函数取得当前机器的版本。例子如下:

 

 

struct utsname u;

uname(&u);

NSString *machine = [NSString stringWithCString:u.machine];

 

if ([machine isEqualToString:@"iPhone1,1"]) {

  // iPhone 1G

}

if ([machine isEqualToString:@"iPhone1,2"]) {

  // iPhone 3G

}

if ([machine isEqualToString:@"iPhone2,1"]) {

  // iPhone 3GS

}

if ([machine isEqualToString:@"iPod1,1"]) {

  // iPod touch 1G

}

if ([machine isEqualToString:@"iPod2,1"]) {

  // iPod touch 2G

}

if ([machine isEqualToString:@"iPod3,1"]) {

  // iPod touch Late2009

}

或者通过 sysctlbyname() 函数取得:

 

 

- (NSString *) platform

{

  size_t size;

  sysctlbyname("hw.machine", NULL, &size, NULL, 0);

  char *machine = malloc(size);

  sysctlbyname("hw.machine", machine, &size, NULL, 0);

  /*

  Possible values:

  "iPhone1,1" = iPhone 1G

  "iPhone1,2" = iPhone 3G

  "iPhone2,1" = iPhone 3GS

  "iPod1,1"   = iPod touch 1G

  "iPod2,1"   = iPod touch 2G

  */

  NSString *platform = [NSString stringWithCString:machine];

 

  free(machine);

  return platform;

}

iPhone OS 版本

 

可以使用 UIDevice 的属性 systemVersion 来得到。例子如下:

 

 

NSString *osversion = [UIDevice currentDevice].systemVersion;

if ([osversion isEqualToString:@"2.1"]) {

  // iPhone

}

if ([osversion isEqualToString:@"2.2.1"]) {

  // iPod touch

}

if ([osversion isEqualToString:@"3.0"]) {

  // iPhone Simulator

}

 

 

iPhone SDK 版本宏

 

就像在windows系统下用 WINVER 宏来判断 windows 系统版本一样,iPhone OS 中也有类似的宏。

 

 

// 当前系统支持的最小版本

__IPHONE_OS_VERSION_MIN_REQUIRED

// 当前系统支持的最大版本

__IPHONE_OS_VERSION_MAX_ALLOWED

比如用 iPhone OS SDK 3.1.2 编译的程序

 

 

__IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_3_0

__IPHONE_OS_VERSION_MAX_ALLOWED == __IPHONE_3_1

这时,我们可以在程序中使用下面类似的 $ifdef 语句:

 

 

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_2_2

    // iPhone OS SDK 3.0 以后版本的处理

#else

    // iPhone OS SDK 3.0 之前版本的处理

#endif

又或者 iPhone OS SDK 4 推出的时候,可以:

 

 

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_2_2

    #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_1

        // iPhone OS SDK 4.0 以后版本的处理

    #else

        // iPhone OS SDK 3.0 ~ 4.0 版本的处理

    #endif

#else

    // iPhone OS SDK 3.0 之前版本的处理

#endif

分享到:
评论

相关推荐

    iphone初学者开发小技巧

    【iPhone初学者开发小技巧】 在iOS开发领域,特别是对于初学者来说,掌握一些实用的技巧可以大大提高开发效率,减少不必要的麻烦。以下是一些在iPhone应用开发中可能会遇到的常见问题及其解决办法: 1. **截取...

    Xcode 使用技巧 Objective-C学习之路 iphone

    本文将根据“Xcode 使用技巧 Objective-C学习之路 iPhone”的标题、描述及部分内文,深入探讨Xcode中的关键功能及其应用。 #### 一、更改项目名称和公司信息 在Xcode中,为了使代码更具专业性和个性化,开发者通常...

    (0165)-iOS/iPhone/iPAD/iPod源代码-分段选择(Segment)-SegmentedControl

    【描述】中提到,我们可以对Segment的文字、颜色和图片进行定制,并且特别提示解压环境需在Mac下进行,因为iOS应用的开发通常是在Mac上使用Xcode完成的。 1. **UISegmentedControl的基本使用**: - ...

    仿IPHONE状态栏

    本文将详细探讨如何在Android应用中实现仿iPhone状态栏的技巧和方法,以及涉及到的相关技术。 首先,我们需要理解Android状态栏的基本结构和功能。在Android系统中,状态栏位于屏幕顶部,显示着网络连接、电量、...

    判断用户设备是iPad还是iPhone的代码

    在iOS开发中,有时我们需要根据用户的设备类型来调整应用程序的行为,比如界面布局或者功能支持。本文将详细讲解如何通过编程的方式判断用户设备是iPad还是iPhone。这个知识点在iOS开发中非常基础,也是优化用户体验...

    iPhone.Human.Interface.Guidelines

    ### iPhone Human Interface Guidelines #### 知识点概览 1. **概述** ...总之,《iPhone Human Interface Guidelines》是一份宝贵的资源,对于希望在iOS平台上成功开发应用程序的人来说至关重要。

    西蒙iphone-OpenGL+ES(高清版)

    同时,介绍了如何设置和获取项目代码,以便在XCode环境中开始进行iOS图形开发。 8. 教程的目的和学习建议:教程的主要目的是帮助初学者快速入门OpenGL ES,在iPhone平台上进行游戏和图形应用的开发。作者鼓励初学者...

    IPhone4_拆机详细步骤图解教程与实操心得[整理].pdf

    《iPhone4 拆机详解:步骤、技巧与注意事项》 在软件开发过程中,有时我们需要对设备进行硬件级别的操作,...希望这篇教程能帮助你成功地拆解和组装你的iPhone 4,让你在软件开发之外,也能掌握硬件维护的实用技能。

    处理iPhone多点触控事件

    在iOS开发中,处理多点触控事件是开发交互式应用不可或缺的一部分。iPhone等iOS设备拥有先进的触控屏幕技术,能够处理复杂的多点触控手势,如轻拍、拖动和滑动等。开发者需要掌握如何在应用程序中妥善处理这些触控...

    Android 仿iPhoneQQ气泡聊天样式源码.zip

    通过学习和理解这份源码,开发者不仅能掌握Android界面设计的技巧,还能深入理解自定义View的绘制原理,提升Android开发能力。同时,此源码也适合于那些正在构建聊天应用的开发者,他们可以直接借鉴或修改,以快速...

    Objective-C语法总结

    最后,文档的作者提到了他个人参与了两个iPhone项目,并将在这过程中对Objective-C语言的理解和开发经验整理成文档,希望与有意从事iPhone开发的朋友分享。作者还表示,文档内容部分参考了网页、斯坦福大学课程和...

    iOS屏幕适配开发实用技巧

    在iOS开发中,屏幕适配是一项至关重要的任务,因为不同的设备有着不同的屏幕尺寸和分辨率。以下是一些关于iOS屏幕适配开发的实用技巧。 首先,处理屏幕旋转是适配过程中的一个基本步骤。通过注册`...

    JavaScript 判断iPhone X Series机型的方法

    JavaScript 判断iPhone X Series机型的方法是一项重要的前端开发技巧,尤其对于需要进行屏幕适配和特殊设计的移动Web应用而言。由于iPhone X系列设备(包括iPhone X、iPhone XS、iPhone XS Max和iPhone XR)引入了...

    iOS越狱内核修改描述(stenfan esser)

    - **调试技巧**:由于没有官方的支持,开发人员需要通过逆向工程和其他技巧来调试内核。 - **工具与资源**:虽然官方不提供调试支持,但可以使用第三方工具和社区资源进行调试。 - **调试流程**:调试iOS内核涉及...

    iOS 11 App Development Essentials

    《iOS 11应用开发精华》是Neil Smyth所著的一本书,旨在指导开发者如何使用Swift语言和Xcode开发工具来开发适用于iOS 11的iPhone应用。本书涵盖了从基础概念到高级特性的广泛内容,适合初学者和已有一些iOS开发经验...

    win7操作系统-强化练习.doc

    - **定义**: iOS 是苹果公司为其iPhone和iPad设备开发的操作系统。 #### 九、计算器类型 **知识点16:计算器类型** - **标准计算器**: Windows 7 提供了多种类型的计算器,除了科学型、程序员、统计信息外,还有一...

Global site tag (gtag.js) - Google Analytics