objective-c - 如何在 Objective-C 中在自己的文件中定义一个 c 结构并将该结构作为参数传递

标签 objective-c c struct

我将此作为两个问题提出,因为我认为我不能单独提出一个问题。

在我的应用程序中,我有很多以“ND”为前缀的东西,意思是 n 维,并且我在我的 NDVector 类中有一个看起来像这样的方法:

angleAtIntersectionWith: (NDVector *) vec 
    inPlaneFirstAxis: (NSUInteger) a1 secondAxis: (NSUInteger) a2

如果您想知道,此方法应该仅在一个平面上找到两个 vector 之间的角度,也就是说仅通过它们的两个分量,分别由 a1 和 a2 索引。所以,例如。 vec1 angleAtIntersectionWith: vec2 inPlanFirstAxis: 0 secondAxis: 2 将找到 vec1vec2 在它们的 0 索引元素和 2 索引元素(X和 Z 分量)。

我想简化这个方法,让它看起来像这样:

angleAtIntersectionWith: (NDVector *) vec inPlane: (struct NDPlane *) plane

NDPlane应该是这样的结构:

struct NDPlane{
    NSUInteger a1;    
    NSUInteger a2;
};

就是这样,这就是它所需要的。没有方法或任何东西。

我想将 NDPlane 保存在自己的文件中,那么我该怎么做呢?我做一个简单的c头文件吗?如果是这样,我是否正确地将其作为结构传递?

最佳答案

是的,只需创建一个声明结构的简单 .h 文件。然后在需要的地方导入 .h。

但是,您不需要参数中的指针。 C 结构按值传递,而不是引用。就像原始类型一样。

我还建议您对结构进行 typedef,这样您就不需要在使用 NDPlane 的任何地方都使用 struct

关于objective-c - 如何在 Objective-C 中在自己的文件中定义一个 c 结构并将该结构作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343135/

相关文章:

ios - 设置 UITextField 的最大字符长度

我们能否将 CUDA 或 OpenCL 的速度与 CPU 性能进行比较?

json - 戈朗 : Type [type] is not an expression; json config parsing

c - 在c中按字母顺序对链表进行排序

c++ - 如何对结构进行位操作?

c++ - MSVC 中的复合文字

iphone - CGImageCreateWithMask 效果很好,但在我生成的图像中被屏蔽的区域是黑色的,我如何将它设置为白色?

iphone - 在 iOS4 中,让 NSTimer 与 NSRunLoop 一起运行会禁用触摸/手势输入

iOS 应用程序在启动时崩溃

c - 是否应该使用宏而不是灵活的数组成员?