我有什么方法可以使用来自 C 的目标 c 类型,例如NSRange
,CGRect
等(它们是结构)?
我正在使用目标 c 运行时来访问目标 c 类,但是有些方法返回并接受目标 c 类型的结构,我的问题是如何使用从 C 中返回的目标 c 结构?
我有什么方法可以使用来自 C 的目标 c 类型,例如NSRange
,CGRect
等(它们是结构)?
我正在使用目标 c 运行时来访问目标 c 类,但是有些方法返回并接受目标 c 类型的结构,我的问题是如何使用从 C 中返回的目标 c 结构?
只要您导入正确的标头,当然可以,作为那些简单明了的 C 结构。具体来说,您会发现NSRange
在<Foundation/NSRange.h>
和CGRect
中定义<CoreGraphics/CGGeometry.h>
。
没有Objective-C
-specific inNSRange
和CGRect
类似的结构。
NSRange 可以通过定义简单地使用:
typedef struct {
unsigned long location;
unsigned long length;
} NSRange;
CGRect 有点棘手:
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
typedef float CGFloat; // 32-bit
typedef double CGFloat; // 64-bit