0

私は次の方法を持っています:

(void)makeString:(NSString *)str1,... {

   va_list strings;

   NSString *innerText = [[NSString alloc] init];
   NSString *tmpStr = [[NSString alloc] init];

   if (str1) {

       va_start(strings, str1); 

       while (tmpStr = va_arg(strings, id)) { 
            innerText = [innerText stringByAppendingString:tmpStr];
       }

       label.text = [str1 stringByAppendingString:innerText];
   }

   [tmpStr release];

}

私は最終的にObjective C Memory Managementの読書に行きます.これに対する答えを見つけると確信しています-おそらくポインタとコピーに関連しています. この関数の最後の行として、実行時に EXC_BAD_ACCESS エラーが発生しますか?

4

2 に答える 2

1
于 2010-09-16T15:03:24.580 に答える
-1

stringByAppendingString は、元の割り当てを置き換える自動解放された文字列を返します。したがって、リリースは必要ありません。しかし、上記の 2 つの割り当てでメモリ リークが発生しています。

おそらく [NSString initWithCString:va_arg(strings, id)] を使用して tmpStr も割り当てる必要があります。

于 2010-05-17T20:32:56.557 に答える