0

何度も呼び出される関数があり、tcp 経由でサーバーに送信するデータを作成します。どこかでデータを失っていると思います。

私は正しい方法が何であるか疑問に思っています:

  1. プログラムの開始時に使用 finalData=[[NSMutableData alloc]init];し、送信する関数は次のようになります(何度も呼び出されます):

    -(NSMutableData*)setProtocolDataForString:(NSString*)data{ 
    finalData=nil;
    //here construct new finalData..
    

または、関数の中で、それを保持します:

 -(NSMutableData*)setProtocolDataForString:(NSString*)data{

finalData=[[NSMutableData data]retain]; //but its wrong because it happens many times
//construct a finalData to send

私は ARC を使用していません。最初のクラッシュ、2番目の方法-私は彼を失っていると思います..

プロパティを使用する必要がありますか? はいの場合、正確な方法は何ですか?

4

1 に答える 1

1

わかりました、呼び出すたびにデータのチャンクを送信しています

 -(NSMutableData*)setProtocolDataForString:(NSString*)data;

次のようなことができます。

if(finalData){
 [finalData release];
 finalData = nil;
}

finalData = [[NSMutableArray alloc] init];
于 2013-03-07T09:00:27.210 に答える