• ベストアンサー

object-cで別の.mのメソッドを呼べるか?

object-cで a1.mというファイルに - (void)m1 { } というメソッドがあるとします。 b1.mファイルから m1というメソッドを呼び出す方法がありましたら教えてください。 b1.mの中にm1メソッドがある場合は [self m1]; と書けば呼び出せると思います。 何か似たような書き方で呼ぶ方法がありますでしょうか? どこかのサイトやブログや 公開ソースコードなどを 紹介していただく教え方でもよいのでお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Object-C じゃなくて Objective-C ですよね? - (void)m1 なので、インスタンスメソッドということですよね? でしたら、 a1 *inst = [ [ a1 alloc ] init ]; [ inst m1 ]; のようにインスタンスを作ってやらなければならないですよね。 +(void)m1 としてクラスメソッドにすれば [ a1 m1 ]; で呼び出せますけど・・・。

puriq
質問者

お礼

ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • objective-C メソッドの呼び出しについて

    こんばんは。objective-Cについて教えてください。 クラス間でのメソッドの呼び出しについてです(果たしてこの言い方であってるのかも怪しいですが…) 例えば、 aクラスの実装ファイル -(void)setUpView {  self.checkButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; [self.checkoutButton setTitle:@"チェック" forState:UIControlStateNormal]; [self.completeCheckoutButton addTarget:self                 action:@selector(checkAction)         forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.checkButton]; } -(void)checkAction {   処理 } これで同じクラス内でのメソッドの呼び出しはできていると思いますが、 bクラスの実装ファイルに書いたメソッドを処理として追加したい場合はどう書いたらいいのでしょうか? 一通り調べたつもりですが、もし過去にも同じ質問がありましたら申し訳ありません。 もし説明が足りない場合は補足させていただきますので、どなたかよろしくお願いします。

  • リフレクション 可変長引数メソッドの取得

    リフレクションで、(1)の方のメソッドインスタンスを得たいとき、どういった方法が考えられますか? //JDK 6.0 public Hoge { void method1(String str, Object ...objs){}//(1) void method1(String str, String str2){}//(2) } Hoge hoge = new Hoge(); Class c = hoge.getClass(); Method m12 = c.getMethod("method", String.class, String.class); Method m11 = c.getMethod("method", ?? );

    • ベストアンサー
    • Java
  • [objective-c]他クラスのメソッドを呼ぶ

    objecive-cを使ってアプリを作っているのですが、 iphoneアプリの開発初心者です。 action.mファイルで指定しているボタンのアクションのところで、 kekka.mのファイルに書いているメソッドを実行させたいのですが、 他クラスのメソッドの実行方法が分かりません。 [インスタンス メソッド名]; で実行できるということは何となく分かったのですが、 どれがインスタンスに当たるのかが不明で、質問しました。 action.mに書いたメソッド ------------------- //次へのボタンが押されたときの処理 - (IBAction)kaisetsu:(id)sender { //kekka.mの- (void)showNextメソッドを呼び出したい。 [★ここの書き方が分かりません★]; kekka *viewController = [[kekka alloc] initWithNibName:@"kekka" bundle:nil]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; [navigationController setNavigationBarHidden:YES animated:YES]; //モーダルビューとして、次のビューを表示する [self presentModalViewController:navigationController animated:YES]; } ------------------- kekka.mに書いているメソッド ------------------------ // 結果を表示する - (void)showNext { // 結果情報を取得する QuizItem *item = [self.quiz nextQuiz]; self.questionTextView.text = item.question; //読み込んで追加========================= NSUserDefaults *_userDefaults = [NSUserDefaults standardUserDefaults]; NSString *kaisetsutext; kaisetsutext = [_userDefaults stringForKey:@"kaisetsutext"]; //読み込み kaisetsutext = item.kaisetsu; [_userDefaults setObject:kaisetsutext forKey:@"kaisetsutext"]; [_userDefaults synchronize]; //読み込んで追加========================= } お手数ですが、ご教授いただけましたら幸いです。

  • C#のキャストについて(object→byte)

    いつもお世話になっております。C#初心者です。 「メソッドの引数として渡された値をリスト型の配列に格納する」という課題に取り組んでいますが、 変数のキャストで実行時にエラーが発生し、頭を悩ませています。 作成したコードは以下のようになっています。 public class TestClass {  private List<byte> hogeList = new List<byte>();  public void TestMethod( object hoge )  {   hogeList.Add( (byte)hoge ); ← (*)  } } 上記のメソッドをMain関数から TestClass test = new TestClass(); test.TestMethod(5); として実行すると、「hogeList」に「5」が格納される、といった動作にしたいと考えています。 しかしながら、ビルドは通るのですが、実行すると(*)の位置で止まり、 「指定されたキャストは有効ではありません。」 というメッセージが表示されます。 そこで質問なのですが、object型からbyte型にキャストする場合にはどのような記述の仕方がありますでしょうか? ご教授よろしくお願いいたします。

  • InvokeMemberメソッドとは何をするメソッドでしょうか?

    はじめまして、質問です。 C#のソースコードで、「Type.InvokeMember メソッド」というのを使っている箇所があるのですが、 これがいったい何をするメソッドなのかよく分かりません。 msdnのヘルプでは、 「指定したバインディング制約を使用し、指定した引数リストと照合して、指定したメンバを呼び出します。 」 と言っていますが、知識不足で理解できていません。 ネットで検索しても参考になりそうなものが引っかからない状況です。 実際に使用している箇所のソースコードは以下のような感じです。 private void axWebBrowser1_NavigateComplete2(object sender, AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e) { Object o = e.pDisp; Object oDocument = null; oDocument = o.GetType().InvokeMember("Document",BindingFlags.GetProperty,null,o,null); o.GetType().InvokeMember("Application",BindingFlags.GetProperty,null,oDocument,null); 中略 } ご存知の方がいらっしゃいましたら宜しくお願い致します。 何か参考になるURLや、このように調べるべきだなどのアドバイスなどもありましたら、 ぜひお願い致します。

  • 同じソリューション内の別のプロジェクトのメソッド呼び出し

    同じソリューション内の別のプロジェクトのメソッド呼び出し お世話になっております。 Visual Studio でC#で開発をしております。 初心者です。 同じソリューション内にある別のプロジェクトのメソッドを呼び出す方法は どの様にしたら宜しいのでしょうか。 下記の様に記述しましたら、 「静的でないフィールド、メソッド、またはプロパティ ~省略~ で、  オブジェクト参照が必要です」と言うエラーが出てしまいます。 何か根本的に間違っているのかも知れません。 何卒、ご教授頂きたく宜しくお願い致します。         記 呼び出し側 private void button1_Click(object sender, EventArgs e) {   呼び出し先のプロジェクト名.クラス名.メソッド名();  } 呼び出される側 namespace プロジェクト名 { public class クラス名 {    メソッド名()    {      処理内容     }   }  }

  • C# Object型の受け渡し

    C++のプログラマです。 以下のコードを通すとdataが配列として配置されます。 Object data; excute(out data); excuteメソッドの引数定義はVARIANT * です。 ここで質問です。 1)C++の概念ではこのような使い方は考えられないのですが、   C#ではあたりまえでしょうか? 2)この場合、配列数と配列の要素を取出す方法を教えてくれませんか? 以上、宜しくお願い致します。

  • C# 匿名メソッドについて

    http://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_05/csharp20_05_02.html 匿名メソッドを勉強しています。 上記のサイトの最初のソースで using System; delegate void MyAction(); class Program { static MyAction CreateMethod() { string message = "Hello! World!"; return delegate() { Console.WriteLine(message); }; } static void Main(string[] args) { MyAction action = CreateMethod(); action(); // 出力:Hello! World! } } このソースに対して、 >>常識的に考えればこのプログラムは動作しないはずである。 >>なぜなら、変数messageはCreateMethodメソッドからリターンした瞬間に消滅するが、 >>匿名メソッドが呼ばれるのはその後だからである。 と書かれていますが、 私にはその不思議さがわかりません。 まず、インスタンスされたクラスは初めにMainを読みに行き、 MyAction action = CreateMethod();でCreateMethod()を実行する。その実行した中でreturn”message”が結果的にされる。 そして、それがactionに代入されるという流れだと思うのですが、なぜ、これが不思議なのでしょうか?

  • 【C++】メソッドやプロパティの隠蔽

    基底クラスAで、Public でメソッドXと、メソッドYが定義されているとき、 それを継承したクラスBで、何らかの方法でメソッドXと、メソッドYを隠蔽させ、 クラスBを継承したクラスCでは、メソッドXと、メソッドYが使えないようにさせることはできますか? ※Visual Studioで、クラスCの入力サポート(メンバーや、メソッドの入力候補を出してくれる機能)で、 メソッドXや、メソッドYが出ないようにしたいです。 ※同様に、メンバーに対しても、隠蔽化をしたいです。

  • メソッド取得方法

    今、setter getter を書いたクラスから、値が set されたものだけを見つけ出し、 get メソッドを呼び出しているのですが、もっとスマートな方法はないでしょうか? public void getSer( Object object ){ static final String KEY = "goo"; String key = null; Method[] getMethodList = getGetMethod( object ); for (int i = 0; i < getMethodList.length; i++) { if( getMethodList[i].getName().startsWith( KEY )) key = getMethodList[i].invoke(object, null).toString(); } } このような場合、getメソッドの数だけ getMethodList の中を 繰り返さないといけないので・・。 ご教授、よろしくお願いします。

    • ベストアンサー
    • Java
このQ&Aのポイント
  • AuslogicsDriver Updaterを使用してドライバーをアップデートした後、WOWOWオンデマンドの動画が視聴できなくなる問題が発生しました。
  • 復元しても同様の問題が再発するため、ネット回線関連のドライバーが影響している可能性があります。
  • 問題解決のために、ネット回線関連のドライバーを確認・更新することをおすすめします。
回答を見る