0

(非同期) URL リクエストを作成しています。

デリゲート関数connectionDidFinishLoadingで、サーバーの応答をインスタンス変数に割り当てます。

リクエストを行ってから数秒待ちますが、レスポンスを受け取ったことを確信しています.

この変数を NSLog に出力する IBAction にリンクされたボタンがありますが、常に null です。

何が起こっているのかわかりません。URLリクエストは新しいスレッドを開始し、保存された変数のいずれかがメインスレッドでアクセスできません...または、保存された変数がまったく表示されないのはなぜですか。

受信したデータをconnectionDidFinishLoading内で適切に使用できますが、このデータをインスタンス変数に割り当てて関数外でアクセスしようとすると、常に null になります。

TL;DR 後で使用するために応答または URL 要求を保存するにはどうすればよいでしょうか!?!

前もって感謝します。

4

1 に答える 1

0

問題は、メモリを保持していないため、自動的に解放されている可能性があります。代入しているインスタンス変数は、「retain」または「copy」を指定したプロパティですか?オブジェクトを設定した後、手動でオブジェクト自体に保持を呼び出すこともできます。

[myString retain];

プロパティを使用すると、より適切に管理できます。例: .H:

@interface MyClass: Object    {
    NSString *myString;
}
@property (nonatomic, retain) NSString *myString;

.M の他の場所:

@synthesize myString    
...
...
self.myString = ...

これにより、次のことを行うまで、文字列が解放されないようにします。

[myString release];
self.myString = NULL;
于 2011-03-19T01:29:45.750 に答える