关于参数传递:iPhone SDK – 调用Objective C函数

iPhone SDK - Call Objective C function

我想创建一个名为"playsound"的函数,它有一个(但后面有两个参数——一个是文件名,另一个是音乐类型(mp3,…)。

但我不能让我的工作人员…请帮帮我

这是我的密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    //
//  MainView.m
//
//  Created by Christopher Fuchs on 26.01.11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import"MainView.h"
#import <AVFoundation/AVAudioPlayer.h>
#import <AVFoundation/AVFoundation.h>

@implementation MainView

void playSound(char filename){
 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Mein Alert" message:filename delegate:nil cancelButtonTitle:@"Abbrechen" otherButtonTitles:nil];
 [alert show];
 [alert release];

}

- (IBAction)PlayFatGuyWalking:(id)sender {

 playSound(@"MusicFile");

}
@end

现在,我只是添加了一个警报而不是播放声音框架参数称为"文件名",应作为警报消息调用。

提前谢谢

格里兹


1
2
3
4
5
6
- (void)playSound:(NSString *)filename {
  // method body
}

// calling
[self playSound:@"MusicFile"];

做这行:

1
void playSound(char filename)

进入这个:

1
void playSound(NSString *filename)

@"foo"结构表示"这是一个nsstring"。

另外,如果您希望将它保留为C函数,那么您可能希望将它移出@implementation块。

您会发现,几乎所有要求在cocoa中输入字符串的内容都需要nsstring,而不是char*。

哦,是的,而且(char文件名)在纯C中也不起作用,它是一个单字节变量,而不是指向潜在字符串的指针。