示例代码:http://github.com/erica/iphone-3.0-cookbook-/tree
1.4 平台限制
- 每个应用程序最大不能超过2GB,目前3g网络好像不能下载大于20MB的应用
- 经验法则:当应用程序所占内存大约20MB时,iPhone会警告应用程序委托和UIViewController,委托收到applicationDidReceiveMemoryWarning:回调,视图控制器收到didReceiveMemoryWarning;当内存占用大约30MB是,iPhone OS会关闭应用程序
- iPhone屏幕一次最多支持5点触摸操作
2.12 使用编译指令
为了检测代码是针对模拟器还是针对IPhone编译,可以使用目标定义:TARGET_IPHONE_SIMULATOR和TARGET_OS_IPHONE。这两个宏定义在TargetConditionals.h头文件
#if TARGET_IPHONE_SIMULATOR
NSString *hello = @"Hello, iOS Simulator!";
#else
NSString *hello = @"Hello, iOS device!";
#endif
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#else
#import <Cocoa/Cocoa.h>
#endif
可以检查系统版本,宏在
Availability.h头文件:
#ifdef _USE_OS_3_OR_LATER
#import <MapKit/MapKit.h>
#endif
还可以检查运行程序的最低版本:
#if __IPONE_OS_VERSION_MIN_REQUIRED<30000
Pre-3.0 code
#else
3.0 code
#endif
OS版本的值使用一下基命名模式:
#define __IPHONE_2_0 20000
#define __IPHONE_2_1 20100
#define __IPHONE_2_2 20200
#define __IPHONE_3_0 30000
#define __IPHONE_3_1 30100
#define __IPHONE_3_2 30200
#define __IPHONE_4_0 40000
#define __IPHONE_4_1 40100
#define __IPHONE_4_2 40200
#define __IPHONE_4_3 40300
#define __IPHONE_5_0 50000
#define __IPHONE_5_1 50100
#define __IPHONE_NA 99999 /* not available */
2.12.2 运行时检查
运行时检查方式又多种。首先,可以调用固件适用性方法,检查设备上运行的系统。不过,一般不建议用这种方法,苹果建议检查功能性和可用性,而不是特定固件版本NSString * celltext=[[UIFont familyNames] objectAtIndex:[indexPath row]];
if([[UIDevice currentDevice] systemversion] hasPrefix:@"2."])
[cell setText:cellText];
else if([[UIDevice currentDevice] systemversion] hasPrefix:@"3."])
[[cell textLabel] setText:cellText];
return cell;
还可以测试对象,看它们是否响应特定的选择器。
NSString * celltext=[[UIFont familyNames] objectAtIndex:[indexPath row]];
if(![cell respondsToSelector:@selector(textLabel)])
[cell setText:cellText];
else
[[cell textLabel] setText:cellText];
return cell;
要想避免编译时警告,最好为项目设置Base SDK和Deployment Target。在Target Info→Build Settings中将Base SDK设为想要面向的OS最高版本,即5.x版本,将Iphone OS Deployment Target 设为想要针对其进行构建的最低OS版本。