incompatible type for argument in Objective-C - what am I doing wrong?
I can't spot what I'm doing wrong here.
I have 2 classes, harness and audioplayer.
In the audioplayer header I have declared m开发者_JS百科y function like so.
- (void) loadAudioFileIntoMemory:(NSURL *)address channel:(int) value row:(int) value2;
// In the audioplayer implmentation file my function is like so.
- (void) loadAudioFileIntoMemory:(NSURL *)address channel:(int)value row:(int)value2
{
//NSLog(address);
}
When I try to call the function in the following way I get an incompatible type for argument error. (audioPlayer is a member of harness by the way and the line below is from harness)
[self.audioPlayer loadAudioFileIntoMemory:rawurls[count] channel:0 row:0];
EDIT 1 for clarity
This is how I am defining my raw url array
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]
You do not access the objets in an NSArray with C style subscripts.
You need to do this:
[self.audioPlayer loadAudioFileIntoMemory:[rawurls objectAtIndex: count] channel:0 row:0];
The problem here is that you are written your code as is rawurls was of type **NSURL
- i.e. an array of pointers to NSURL
s. In fact from your final example, it's of type NSArray
.
Subscript operators don't work on NSArray
s - this is Objective-C not c++.
Here's how to subscript an NSArray:
(NSURL*)[rawurls objectAtIndex:count]
精彩评论