プロが教える店舗&オフィスのセキュリティ対策術

c言語とobjective-cを並行して勉強しています。

c言語では機能をまとめるために関数を定義できますよね。
-----
void display(int a){
printf("%d" , a);
}
int main(void){
display(10);
}
---

これでdisplayという関数に10という引数を渡して表示させることができますよね?

objective-cの場合は例えば以下のように書くことがわかり、コンパイルも通りました。


- (void)display{
NSlog(@" TEST ");
}

しかし・・・・呼び出すことができませんね。。。
objective-cの場合は[ インスタンス メソッド名 ]; のような呼び方なのですよね。
メソッドだけを呼び出すことはできない、ってことなのでしょうか・・・?

色々検索してみたのですが、
@implement~@endで囲んでクラスにして
インスタンスを作って、メソッドを呼ぶ方法ばかりで、
上記のC言語の例のような、単純な関数定義→呼び出しの方法を見つけることができませんでした。

上記のようなC言語の例はよくあると思うのですが、
これと同じことがobjective-cで、できるともできないとも、書いてないように思います。

例えば上のc言語と同じ動作をobjective-c
に移植するとどうなるのでしょうか・・・?というか、不可能、ということでしょうか・・・?

A 回答 (2件)

void display(int a){


printf("%d",a) ;
/* NSLogを使うなら */
NSLog(@"%d" , a);
}

int main(void){
display(10);
}

Objective-Cで、「Objective」な部分を使わなければ、普通のCです。

この回答への補足

ご回答ありがとうございます。

確かに実行することが出来ました。ありがとうございました。

しかし、さらに試してみようと、アラートを表示するメソッドを作ってみると
コンパイルがとおりませんでした。

void display2(){
UIAlertView *alert = [
[UIAlertView alloc]
initWithTitle:@"警告"
message:@"よろしいですか?"
delegate:self // /【ここでエラー】Use of undeclared identifier 'self'
cancelButtonTitle:@"OK"
otherButtonTitles:nil
];
[alert show];
[alert release];

}
そこでメソッド表記を
-(void) display2{
とするとコンパイルが通りました。
しかしこれだと
display;
で呼ぶことが出来ませんでした。

でも、ここでよくソースを眺めてみるとdidloadにヒントがありました!
[self display2 ];

で呼び出すことが出来ました!
インスタンス部分には
self
とかけばよかったのですね?!

(これは正しいですかね??)

補足日時:2012/10/05 09:40
    • good
    • 0

え~と....



#1 の「『Objective』な部分を使わなければ」の意味, 理解できてますか?







「クラスメソッド」という技もありますけどね.
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!