■AppDelegateに宣言した変数に別クラスからアクセスする方法

超基本なことかとは思いますが、復習も兼ねて。

AppDelegateに変数をおいておくとどのクラスからもアクセスしやすくて便利ですよね。

以下方法です。

他のクラスからもアクセスして使用したい値を例えばint型のvalueとすると、

HogeAppDelegate.h

@interface HogeAppDelegate : NSObject {
int value;
}
@property (nonatomic, assign) int value;

HogeAppDelegate.m

#import “ChozaiCalc2AppDelegate.h”

#import “HogeAppDelegate.h” //tokumeiさんのご指摘により修正。
@synthesize value;

としておく。

そしてvalueにアクセスしたいクラスの.hファイルで

#import “ChozaiCalc2AppDelegate.h”

#import “HogeAppDelegate.h” //tokumeiさんのご指摘により修正。

としてから.mファイルに

HogeAppDelegate *appDelegate = (HogeAppDelegate *)[[UIApplication sharedApplication] delegate];
self.value2 = appDelegate.valule;

とすることでvalue2にvalueの値を入れることができます。

実は数時間悩んでたんです。
ああースッキリした。
基礎をもう一度勉強しないとダメですねー。

■2012年2月追記

この方法ではValueを作っては取り込んで作っては取り込んで、となり、ソースコードが煩雑になってしまいます。

そこで、アプリの規模にもよりますが、AppDelegateにNSMutableDictionaryを作成して値を共有するのが楽ちんです。

詳しくはTeamMosa2さんの「iOSゆとりプログラミングのススメ | 仕事人の開発日誌 」を参考にしてみては如何でしょうか。
[ad#Adsense_blog.guttyo.jp_Post_bottom]

スポンサーリンク

フォローする

コメント

  1. tokumei より:

    すみません、自分もちょうどここでつまづいて2日ぐらい悩んでいるのですが未だにわからず悩んでおります。
    #import “ChozaiCalc2AppDelegate.h”
    とする意味がわからないです。
    HogeAppDelegate.hで宣言したvalueなのだから
    HogeAppDelegate.hをImportするのではないんでしょうか?

  2. guttyo より:

    tokumeiさん
    すみません、当方のソースをそのままコピペしていました。
    ご指摘の通り、HogeAppDelegate.hをインポートする、で正しいと思われます。

    混乱させてしまい申し訳ございません。修正させて頂きました。