単純な処理ですが、各ViewControllerで利用される処理があり、それをPHPのrequireのような事を実現したいと思っています。 AppDelegateにひたすら各のは違うと理解しているのですが、他に簡単に実現する方法はないでしょうか。
カテゴリを使えばいいんじゃないかなhttp://wisdom.sakura.ne.jp/programming/objc/objc15.html
ご回答ありがとうございます。カテゴリというものは初めてしました。ネット上の情報をいろいろ見て回ったのですが、これですと既存のクラスの拡張を行うような形になる為、結果的にクラスを作るのとかわらないのではないでしょうか。つまりカテゴリを使う場合、ベースとなるクラスが必要になるという事です。例えば、ParentViewController.mとChildViewController.mの二つ画面を持つ場合、両方から利用するメソッドを実装する場合のようなケースです。ちょっと変なたとえですが、両方の画面で、ある特定の計算処理を行うメソッドがあったとして、それを個別に記載するとメンテナンスもし辛くなるので、外部ファイルに定義して利用したいよなケースです。この場合、ViewControllerをベースのクラスとしたカテゴリを作成し使えばよいということでしょうか。
そうですね。ParentViewControllerとChildViewControllerの親クラスのカテゴリを作成すればいいです。例えば、2つの親クラスUIViewControllerにカテゴリUIViewController+hogeを作成すれば、必要なときにUIViewController+hoge.hをimportすればいいです。UIViewController+hoge.h
#import <UIKit/UIKit.h> @interface UIViewController (hoge) - (NSString*)getHogeString:(NSString*)string; @end <|| UIViewController+hoge.m >|ObjC| #import "UIViewController+hoge.h" @implementation UIViewController (hoge) - (NSString*)getHogeString:(NSString*)string { return [NSString stringWithFormat:@"hoge:%@", string]; } @end
ViewController.m
#import "UIViewController+hoge.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSString *str = [self getHogeString:@"test"]; }
ありがとうございます。サンプルコードまでご提示非常にたすかります。まずはお教えいただいた内容でいろいろと試してみたいと思います。丁寧にお教えいただきありがとうございました。
コメントはまだありません
これ以上回答リクエストを送信することはできません。制限について
ログインして回答する
そうですね。
ParentViewControllerとChildViewControllerの親クラスのカテゴリを作成すればいいです。例えば、2つの親クラスUIViewControllerにカテゴリUIViewController+hogeを作成すれば、必要なときにUIViewController+hoge.hをimportすればいいです。
UIViewController+hoge.h
ViewController.m
2014/08/01 21:59:25ありがとうございます。
2014/08/03 17:43:09サンプルコードまでご提示非常にたすかります。
まずはお教えいただいた内容でいろいろと試してみたいと思います。
丁寧にお教えいただきありがとうございました。