Using standard CPP for iOS development

问题描述:
今天在研究iPad与flash通讯。TUIO库使用标准C++(.cpp),而iPad使用OC(.m)。一调用TUIO类库就报错。

问题分析:
TUIO放入解决方案,不调用TUIO库中的内容不报错,一调用就报错。说明说连接问题,或者是不能这样调用。

问题解决
把所有.m文件改为.mm后缀,使其变为Objective-C++文件。
一切ok了。

循环引用错误

问题描述:

今天在做denizen puzzle的iPad版,Xcode有两个文件报错:

/Users/CouldHll/Desktop/Puzzle/Classes/StartButton.h:16:0 /Users/CouldHll/Desktop/Puzzle/Classes/StartButton.h:16: error: expected specifier-qualifier-list before 'StartLayer'

/Users/CouldHll/Desktop/Puzzle/Classes/StartLayer.h:16:0 /Users/CouldHll/Desktop/Puzzle/Classes/StartLayer.h:16: error: expected specifier-qualifier-list before 'StartButton'

问题分析:

仔细检查了一下,代码没有问题。检查着,突然发现这两个文件是circle reference,两个文件头都互相引用:

#import "StartLayer.h"

#import "StartButton.h"

问题解决:

一个改成@class StartLayer;

一个保持#import "StartButton.h"

一切安逸了。

函数返回值为枚举类型引起的错误

问题描述:
今天,做Denizen联手拼图iPad版,- (PlateOrientation)orientationRight读取属性函数中的return [self convertAngleToOrientation:_angleRight];报错:error: incompatible types in return

问题分析:
拆分 return [self convertAngleToOrientation:_angleRight];变为:
PlateOrientation orientation=[self convertAngleToOrientation:_angleRight];
return  orientation;
继续报错: error: incompatible types in assignment
原来问题出在 [self convertAngleToOrientation:_angleRight]上,这个应该返回enum的函数,用枚举接受其值却报错。

问题解决:
enum总是uint的,先用uint接住再转成enum:
uint uintOrientation=[self convertAngleToOrientation:_angleRight];
PlateOrientation orientation=uintOrientation;
return orientation;

PS:调用函数原型:
- (PlateOrientation)convertAngleToOrientation: (uint)vAngle

iPad界面设计基本规范


平台特点

1 大屏幕,分辨率 1024x768
2 再次强调没有固定的方向,必须四个方向都支持。
3 可以外接键盘
4 可以放置设备,与台式机同步

iPhone与iPad的共同特点

- 内存有限
- 同时运行单个程序
- 在设置功能里放置程序选项
- 设备方向可以改变
- 最小化的帮助,让用户直接就能看懂
- 程序响应手势而不是鼠标
- 运行源生程序、Web程序或者二者兼备
- 图片深度24位(RGB各8位),另带8位alpha通道,建议使用PNG格式图片

界面简单建议

- 支持所有方向
注意要为每个方向都提供一个启动图片
- 增强交互而非只增加功能
- 使用split view, 导航和弹出窗口来平整信息层级
- 减少全屏切换,仅仅改变需要改变的部分
- 支持协作和互联
- 如果可能,增加真实感以及物理维度到应用程序里,尽可能像真实世界的物品以便用户易于上手
- 界面漂亮 用户喜爱
- 尽量让用户更关注内容而不是界面
- 尽可能减少强制用户模式化操作
- 减少使用列表,改变为其他形式
- 尽量支持多手指手势
- 让用户模式化操作的地方可以用弹出窗口
- 限制复杂的模式化操作
- 减小文件操作尤其尽量让用户感觉不到文件系统的存在
- 仅仅在必须的情况才提示用户保存
- 将工具条整合在界面上部
- 尽可能快速启动程序
尽量使用截图作为启动画面
不要在启动时显示关于或者splash screen
恢复上次运行状态
尽量不要让用户提供设置信息
- 程序可能随时停止
- 为每个方向都准备启动画面
- 建立漂亮的图标
尺寸:72x72
和iPhone程序类似,iPad程序的图标会自动增加:圆角、阴影和高光。
图标标准:
> 90度直角边
> 没有高光
> 不带alpha通道透明
另外要提供48x48图标一个,用于spotlight搜索和设置
- 遵循已有规范