5

我有什么方法可以使用来自 C 的目标 c 类型,例如NSRangeCGRect等(它们是结构)?

我正在使用目标 c 运行时来访问目标 c 类,但是有些方法返回并接受目标 c 类型的结构,我的问题是如何使用从 C 中返回的目标 c 结构?

4

2 回答 2

7

只要您导入正确的标头,当然可以,作为那些简单明了的 C 结构。具体来说,您会发现NSRange<Foundation/NSRange.h>CGRect中定义<CoreGraphics/CGGeometry.h>

没有Objective-C-specific inNSRangeCGRect类似的结构。

于 2013-06-27T14:59:20.047 回答
2

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
于 2013-06-27T15:00:47.177 回答