2011-01-26 5 views
0

私は、 "playSound"という名前の関数を作成したいと思います(後で2つのパラメータ、1つはファイル名、もう1つはmusictype(mp3、...))iPhone SDK - Objective C関数を呼び出す

しかし、私はPARAMTERは私の機能で作業を取得カント...私を助けてください

ここに私のコードは今のところ

// 
// 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 

だ、私はちょうど、アラートの代わりに、演奏音枠組み 追加paramaterは "filename"と呼ばれ、事前に警告

おかげ

greez

+0

http://stackoverflow.com/questions/683211/method-syntax-in-objective-c、 ウィキペディアでさえ、C関数とObj-Cメソッドの違いについて説明しています:http://en.wikipedia.org/wiki/Objective -C#Messages playSoundのプロトタイプをObj-C構文に変更する必要があります。さらに、@ ".."のリテラルは、NSStringのためのものであり、char(char *、これはおそらくあなたが意味するものではありません)ではありません。 – pmdj

答えて

1

この行してください:@ "foo" という建設は、これはNSStringのである「と言う

void playSound(NSString *filename) 

:この中

void playSound(char filename) 

を"

また、C関数をそのまま使用する場合は、@implementationブロックの外に移動したいことがあります。

あなたはCocoaで文字列を要求するすべてのものがchar *ではなくNSStringを必要とすることがわかります。

ああ、と(文字ファイル名)は、潜在的な文字列へのポインタではなく、単バイトの変数であるプレーンCでも動作しません。

+0

oh man :)ありがとう皆さん:9 – Chris

+0

Objective-Cのメソッドではなく、Cの関数にしたい場合は、クラスの外に移動する必要があります。 – pmdj

3
 
- (void)playSound:(NSString *)filename { 
    // method body 
} 

// calling 
[self playSound:@"MusicFile"]; 
関連する問題