NSMutableData正确的方法?

时间:2013-03-07 08:57:04

标签: objective-c cocoa memory-management

我有一个被多次调用的函数,它创建了通过tcp发送到服务器的数据。我想我在某处丢失数据。

我想知道什么是正确的方法:

  1. 在程序开头使用finalData=[[NSMutableData alloc]init];,而不是要发送的函数(多次调用):

    -(NSMutableData*)setProtocolDataForString:(NSString*)data{ 
    finalData=nil;
    //here construct new finalData..
    
  2. 或者,在函数中,保留它:

     -(NSMutableData*)setProtocolDataForString:(NSString*)data{
    
    finalData=[[NSMutableData data]retain]; //but its wrong because it happens many times
    //construct a finalData to send
    

    我没有使用ARC。 第一种方式崩溃,第二种方式 - 我想我正在失去他......

    我应该使用财产吗?如果是的话,这样做的具体方法是什么?

1 个答案:

答案 0 :(得分:1)

好的,每次拨打电话时都会发送一大块数据

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

您可以执行以下操作:

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

finalData = [[NSMutableArray alloc] init];