我正在编写一个框架,我想在 iOS 和 MacOS 项目中使用它。此框架的一部分使用CGPoint
和CGRect
,虽然我可以为两个目标引用CoreGraphics
,因为MacOS使用NSPoint
和NSRect
我遇到了编译器错误。
编写可互换使用CGPoint
和NSPoint
的共享框架的推荐方法是什么?我猜这是可能的,因为CoreGraphics
可以包含在MacOS或iOS项目中,它将编译时没有错误,并且基于NSPoint
和CGPoint
的方法。
答案 0 :(得分:1)
不知道推荐的方式是什么,但这是一个建议。
查找NSPoint
的定义,您会发现:
typedef CGPoint NSPoint;
,同样适用于NSRect
和NSSize
。那么至少在10.11上,它们可能在某些时候是不同的定义,但它们始终是相同的struct
,并且结构相等性成立。
所以,只需使用CG*
编写您的库,并使用.h
和CG*
的{{1}}以及.h
的操作系统NS*
。 (也许写一个构建阶段,从iOS构建OS X .h
- 所以这两个保持同步和正确。)
HTH