2

基本的にアプリケーションのタブであるいくつかのView Controller間でNSDictionaryオブジェクトを共有するにはどうすればよいか疑問に思っていました。

プロトコルにキャストしてプロパティにアクセスできるように、Java のようなプロトコルを使用してみました。それはうまくいかないようです。

また、複数のView Controller間でデータをグローバルに共有する方法で同様の質問を見ました

しかし、appDelegate メソッドは安全ではなく、メモリ リークが発生する可能性があることがわかりました。

同様に、クラス A をクラス B に注入すると、同じ問題が発生します。

だから、私のコードで勉強したり実装したりする必要がある方法を誰かに提案してもらえますか?

4

4 に答える 4

1

Dictionary だけを共有したい場合は、from ヘルパー クラスを使用したクラス メソッドを使用してください。

+(NSDictionary *)shareMethod
{
return dict;
} 
于 2013-03-14T09:50:08.677 に答える
1

私は抜け道を見つけました。辞書を共有したいので、プロトコルでメソッドを宣言しました

- (void) setSingleHouse:(NSDictionary*) singleHouse;

各コントローラーで、適切な方法でメソッドを実装しました。したがって、私は今のところそれらを共有することができました。

また、以前に間違った方法でキャストしていたこともわかりました(@protocol(プロトコル名))。NSObject に変更しました。

お騒がせしてすみません。

于 2013-03-14T10:18:53.163 に答える
0

appDelegateインスタンスでプロパティを使用しないことをお勧めします。このパターンは、コードの再利用性を向上させません。

基本的に、共有NSDictionnaryがモデルです。したがって、コードをMVC設計パートに従わせたい場合は、パブリックプロパティにNDDictionnaryを含む共有インスタンスを使用してクラスを作成する必要があります。

これはこの投稿でよく説明されています

このようにして、共有NSDictionnaryに次のようにアクセスします。

NSDictionary* sharedDictionnary = [MyModel sharedInstance].sharedDictionary;
于 2013-03-14T09:51:33.387 に答える