我想尽量减少项目中的 Obj-C 代码量。
作为这项工作的一部分,有必要抽象多点触控 UITouch 数据,以实例化一些 C++ 类,这些类将在我从 C++ 处理数据时管理保存数据,而不是直接通过目标 C 处理它。这样做的原因有很多以这种方式(例如能够使用任意形式的设备输入挂钩到代码中)。
这是我到目前为止的 API。我有一个InputHandler
具有这些公共方法的类:
// c++
void beginPoint(float x, float y, void* touchUID);
void endPoint(float x, float y, void* touchUID);
void movePoint(float x, float y, void* touchUID);
void cancelPoint(float x, float y, void* touchUID);
对应- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
于我的ViewController.mm
等。
我需要分别跟踪单个手指,并且文档清楚地表明每个手指都被分配了自己的 UITouch 实例(即 UITouch 对象实际上代表一个特定的手指)。这表明我可以不使用指针值作为手指跟踪点的唯一 ID。
但是,我在这里遇到了麻烦:
我现在需要了解桥接演员表。老实说,我对 ARC 的工作原理一无所知,因为我几乎不了解保留/释放。我完全投入shared_ptr
到 C++ 和朋友中来帮助我管理复杂的系统。
我显然需要留下一个UITouch* touch
人,并让它完全保留/释放/ARC'd,就好像我没有访问它一样。但即使是这样基本的东西,我也不清楚我需要使用三个桥接演员选项中的哪一个。