{\r
//listにある文字列でsを分割し、その結果をseparatedに追加する。\r
//listに存在する文字列は新しくメモリを確保せず、リスト中のStringタグへのポインタをseparatedに記録する。\r
- //従ってseparatedを解放する際は、listのdata32をすべてTrueにした上で、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
+ ////従ってseparatedを解放する際は、listのdata32をすべてTrueにした上で、CHNLIB_UIPArray_FreeSelectedAllを利用するべきである。\r
+ //referenceCountは、list中の文字列は2以上になり、listにない文字列は1となる。\r
+ //従って、separatedをreleaseすれば、安全に解放できる。\r
//listにない文字列はdata32==False(0)\r
//listにある文字列はdata32==tag->data32\r
int index, end, end_end, location;\r
//もうリストの文字列はない\r
if(end != end_end){\r
//でもまだ文字列は残っている\r
- CHNLIB_UIPArray_AppendLast(separated, False, CHNLIB_String_ExtractByLength(s, end, CHNLIB_MAX_STRING_LENGTH));\r
+ CHNLIB_UIPArray_AppendLast(separated, False, autorelease(CHNLIB_String_ExtractByLength(s, end, CHNLIB_MAX_STRING_LENGTH)));\r
}\r
break;\r
}\r
//リストの文字列が見つかった\r
if(location != 0){\r
//リストの文字列の前に、リストにない文字列がある\r
- CHNLIB_UIPArray_AppendLast(separated, False, CHNLIB_String_ExtractByLength(s, end, location));\r
+ CHNLIB_UIPArray_AppendLast(separated, False, autorelease(CHNLIB_String_ExtractByLength(s, end, location)));\r
end += location;\r
}\r
CHNLIB_UIPArray_AppendLast(separated, CHNLIB_UIPArray_GetData32ByIndex(list, index), CHNLIB_UIPArray_GetPointerByIndex(list, index));\r
//終端文字\r
break;\r
}\r
- CHNLIB_UIPArray_AppendLast(separated, u, CHNLIB_String_ExtractByLength(s, (int)(p - p_base), (int)(q - p)));\r
+ CHNLIB_UIPArray_AppendLast(separated, u, autorelease(CHNLIB_String_ExtractByLength(s, (int)(p - p_base), (int)(q - p))));\r
p = q;\r
}\r
\r