【问题标题】:How to send C-style array to objective-c method如何将 C 样式的数组发送到 Objective-C 方法
【发布时间】:2011-11-01 06:29:29
【问题描述】:

我正在尝试将 c 样式的整数数组发送到 Objective-c 方法,但在方法中我只收到数组的第一个元素。 这是一个例子:

int a[3];
a[0] = 111;   a[1] = 222;   a[2] = 333;
[self getMatrix:a];

然后

-(void)getMatrix:(int[3])matrix
{
    return;      -- breakpoint here
}

所以,当调试在断点处停止时,我有矩阵:

matrix  int *   0xbfffddd4
*matrix int 111

其他元素在哪里? 因此,2d 数组变为 1d 数组,3d 数组变为 2d 数组等。 我做错了什么?

谢谢!

附: NSArray 工作正常,但我无法想象如何在不编写大量代码的情况下使用多维(3d、4d)NSArray。

【问题讨论】:

  • 你可以把NSArrays作为NSArrays的元素。为了解决您的问题,您应该查看参考调用。

标签: objective-c c arrays methods


【解决方案1】:
-(void)getMatrix:(int[3])matrix
{
    int a = matrix[0];
    int b = matrix[1];
    int c = matrix[2];
}

您将看到这些值是正确的。没有任何错误。调试器只显示*matrix,这是第一个元素。这里matrix 本身是一个指向整数或int * 的指针。

【讨论】:

    【解决方案2】:

    您需要通过发送指向第一项和数组大小的指针。

    看看如何

    - (void)setLineDash:(const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase

    在 NSBezierPath 中这样做。

    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSBezierPath_Class/Reference/Reference.html

    【讨论】:

      猜你喜欢
      • 2011-11-07
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多