2011-09-15 10 views
0

私は'WebServicesiPhoneという名前のクラスを持っている....私はこのクラスのインスタンスを作成し、いくつかのjsonの解析関数を行い、いくつかの配列Delegateクラスで...IOSの私のクラスのインスタンスを作成する最良の方法は

は、どのように私は最善の方法であるいくつかの他のクラス....で、このクラスのインスタンスを宣言することができます....

WebServicesiPhone *newsParser = [[WebServicesiPhone alloc] init]; 
[newsParser getData:0:nil:0:0]; 
[newsParser release]; 

またはI宣言する必要が他のクラスの.hファイルのインスタンス..このように

WebServicesiPhone *newsParser; 
あなたが公にインスタンスを公開したい場合は

と私は、このメソッドを使用していた場合、私は私の使用後にオブジェクトを解放する必要がwhrere ..メソッドファイルに割り当てる.....

newsParser = [[WebServicesiPhone alloc] init]; 

答えて

0

は、それはすべて異なります。必要がない場合は、最初のサンプルと同様にローカル変数を使用します。

他のメソッドを使用する場合は、クラスのdeallocメソッドでインスタンスを解放します。

1

私はいくつかの用語を混ぜていると思いますので、できるだけ簡単に説明しようと思います。

WebServicesiPhone *newsParser;はインスタンスではなく、変数です。 .hファイルで中括弧で囲まれて宣言されている場合は、クラスのすべてのインスタンスにインスタンス変数があるため、インスタンス変数です。もしそれが.mファイルのどこかで宣言されていれば、それはローカル変数であり、宣言したコードブロック内でのみ利用可能になります。

[[WebServicesiPhone alloc] init];はタイプWebServicesiPhoneの新しいオブジェクトをインスタンス化し、また、インスタンスと呼ばれ、あなたがnewsParserにその値を代入するとき、それはインスタンスまたはローカル変数で、それ(newsParser)は、あなたのクラスのインスタンスへのポインタになります。

コード全体にこのnewsParserを使用する必要がある場合は、インスタンス変数(またはプロパティ)を作成し、クラス 'deallocメソッドで解放することをお勧めします。たとえば、initメソッドの実装のように、1つのコードブロック内にのみ必要な場合は、ローカル変数を作成して、すぐにその変数を解放してください。

0

あなたはVdesmedTが言ったように、あなたが持っている.m.hが、クラスの拡張でそれを宣言することなく、公に変数publicly.Youがそれを暴露から隠すことができるインスタンスを公開したい場合はWebServicesiPhoneのインスタンス変数は、クラススコープを持っているとしたい場合クラススコープあなたがそれを完了した後にリリースしてください。通常はdeallocでは、- (void)createWebServiceにinitインスタンスを割り当て、何度も何度も呼び出してからdeallocメソッドでdeallocを実行すると、適切なメモリ管理ではないと言えます。

関連する問題