Objective-C中参数的不兼容类型 - 我做错了什么?

时间:2010-11-23 10:19:24

标签: objective-c types parameter-passing

我无法发现我在这里做错了什么。

我有2个课程,安排和音响。

在audioplayer标题中,我声明了我的功能。

- (void) loadAudioFileIntoMemory:(NSURL *)address channel:(int) value row:(int) value2;

//在audioplayer implmentation文件中,我的功能是这样的。

- (void) loadAudioFileIntoMemory:(NSURL *)address channel:(int)value row:(int)value2
{

 //NSLog(address);
}

当我尝试以下列方式调用该函数时,我得到一个不兼容的参数错误类型。 (顺便提一下,audioPlayer是线束的成员,下面的线是来自线束)

[self.audioPlayer loadAudioFileIntoMemory:rawurls[count] channel:0 row:0]; 

为清晰起见编辑1

这就是我定义原始url数组的方法

rawurls= [[NSMutableArray alloc] initWithCapacity:16];
    // Create the URLs for the source audio files. The URLForResource:withExtension: method is new in iOS 4.0.
    NSURL *loop0   = [[NSBundle mainBundle] URLForResource: @"FHP_EFFECT25_C.mp3"
                                                withExtension: @"mp3"];

[rawurls addObject:loop0]

2 个答案:

答案 0 :(得分:1)

您不能使用C样式下标访问NSArray中的对象。

你需要这样做:

[self.audioPlayer loadAudioFileIntoMemory:[rawurls objectAtIndex: count] channel:0 row:0]; 

答案 1 :(得分:0)

这里的问题是你编写的代码是rawurls类型**NSURL - 即指向NSURL的指针数组。事实上,从最后一个例子来看,它的类型为NSArray

下标运算符不适用于NSArray - 这是 Objective-C 而不是 c ++

以下是subscript an NSArray

的方法
(NSURL*)[rawurls objectAtIndex:count]