3

我正在与另一位程序员一起编写一些代码。他用 C 编写了一个解码算法,并为我提供了一个作为包装器的 Objective-c 类,以避免我不得不处理对他的代码的调用。

他的 .h 文件看起来像这样

#import <UIKit/UIKit.h>
#import "decode_audio_data.h"


@interface DecoderWrapper : UIViewController {
    uint32_t   numberOfDecodedData; 
    uint32_t   decodedData[MAX_DECODED_DATA_SIZE]; 
}


- (void) feedData:(int16_t [])data;
- (uint32_t) numberOfDecodedData;
- (uint32_t *) decodedData;


@end

现在,我可以毫无问题地调用“feedData”和“numberOfDecodedData”函数,但是我在调​​用“decodedData”时遇到了一些问题,它应该返回一个 uint32_t 数组。

我如何 NSLog 该数组的内容?我很困惑,因为我不懂 C,而且我对指针也不是很有信心....

这就是我打电话的地方:

[decoderWrapped feedData:debug];

if ([decoderWrapped numberOfDecodedData] > 0) {
    for (in j=0; j<[decoderWrapped numberOfDecodedData]; j++) {
        // how do I print out every position of [decoderWrapped decodedData] ??

    }   
}

任何帮助表示赞赏!

4

3 回答 3

1

简短的回答是NSLog( @"%d", [[decoderWrapped decodedData][j] )。Auint32_t实际上只是一个unsigned int相关的 -typedef)。

更长的答案是你想看看字符串格式化指南,它几乎与C-stringformatting相同,并添加了一些处理对象的内容。

于 2013-10-08T14:44:23.590 回答
1
    uint32_t *decodedData = [decoderWrapped decodedData];
    for (int j=0; j<12; j++) {
        NSLog(@"%d",decodedData[j]);
    }
于 2013-10-08T14:46:15.447 回答
1

尝试

NSLog(@"%u", [decoderWrapped decodedData][j]);

到目前为止,在您的循环内部。

于 2013-10-08T14:39:52.663 回答