2009-05-19 14 views
0

ここに問題があります。目的地Cのアドレッシングとポインタ

私はメソッド(obj-Cで呼び出されるメッセージ)を持っています 私はオブジェクトへのポインタを渡しています。

私はそのポインタが指しているものを変更し、古いオブジェクトを解放しようとしています。そして、私はインスタンス変数(メソッドに渡されている)に、現在割り当てられている新しい値を参照したいと思います。基本的には変数が

-(NSDictionary *) GetListWithCommand:(NSString*) command andCache:(CachedMutableDictionary*) cache 
{ 
    CachedMutableDictionary* Dictionary = [Getfrom somesource]; 
    CachedMutableDictionary* temp = cache; 
    cache = [Dictionary retain]; 
    [temp release]; 
} 

はそう、私はアドレスレベルでの両方を参照することができ、その後、アドレスのキャッシュ変数の参照で送るとする必要があると考えているのC#のような言語でOUTパラメータと同様に動作しましたオブジェクトレベルで実行されます。

CachedMutableDictionaryクラスでコピーメソッドを作成する方が賢明で簡単です。

+1

あなたが正確に何を求めていますか?このコードがうまくいくかどうかを知りたいのですか、それともこのようなことをする最良の方法でしょうか? – Tim

答えて

1

はい、このメソッドは、呼び出し元が&キャッシュを渡すCachedMutableDictionary **を取る必要があるようです。メソッドの最後の3行は次のようになります。

CachedMutableDictionary *temp = *cache; 
*cache = [Dictionary retain]; 
[temp release]; 

これは面白いです。キャッシュは元々どこから来たのですか?それは常にオブジェクトのインスタンス変数ですか?なぜオブジェクトを渡すだけではないのですか?

+0

私はそれが面白いにおいに同意します。私がしようとしているのは、2つのソース(キャッシュされたplistとXMLソース)を選択するだけでなく、辞書がオブジェクトに保存されるため、何度も何度も同じ決断をすることなく辞書を取得できます。私はこれを私のコードに追加しているので、主要なリファクタを避けようとしています。 – Bluephlame

5

あなたはここにあるいくつかの星を追加する必要があります。

-(NSDictionary *) GetListWithCommand:(NSString*) command 
          andCache:(CachedMutableDictionary**) cache 
{ 
    CachedMutableDictionary* Dictionary = [Getfrom somesource]; 
    CachedMutableDictionary* temp = *cache; 
    *cache = [Dictionary retain]; 
    [temp release]; 
} 
+2

キャッシュを逆参照する前に、キャッシュが実際にはヌルでないことを確認する必要があります。 –