if (url_leng)
{
NSString *open_string;
if (g_system_status.language_code == 0)
open_string = @"Open";
else if (g_system_status.language_code == 1)
open_string = @"Abrir";
[open_string retain];
[alert addButtonWithTitle : open_string];
g_scan_result = targ_url;
}
上記のコードセグメントについて考えてみます。私の質問は「保持」ステートメントについてです。どういうわけか、コードを機能させるためにretainステートメントが必要です。私の唯一の説明は、open_stringがスコープ外になると、それに対してリリース呼び出しが行われるということです。したがって、値を保持するには、retain呼び出しが必要です。
誰かがこれを確認できることを願っています...
また、条件付きブロックの後に文字列のリリースステートメントが必要かどうかを尋ねたいですか?
更新:(あなたの親切な提案と貴重な洞察を読んだ後)
次の修正を試みました:
if (url_leng)
{
if (g_system_status.language_code == 0)
[alert addButtonWithTitle : @"Open"];
else if (g_system_status.language_code == 1)
[alert addButtonWithTitle : @"Abrir"];
else
[alert addButtonWithTitle : @"Open"];
g_scan_result = targ_url;
}
今はすべて問題ないようです(retainステートメントがなくても)。