[請益] 有關local variable的問題
看到書裡寫的一個範例程式,想請問一下為什麼在reversedString最後的
return reversed不需要加上retain或是autorelease?這樣local variable
不會在return後被release掉嗎?
- (id)reversedString
{
unichar *buffer;
int length, i, j, tmp;
id reversed;
if ((length = [content length]) <= 0)
return @"";
buffer = (unichar *)malloc(sizeof(unichar) * length);
[content getCharacters:buffer range:NSMakeRange(0, length)];
for (i = 0, j= length-1; i < j; i++, j--)
tmp = buffer[i], buffer[i] = buffer[j], buffer[j] = tmp;
reversed = [NSString stringWithCharacters:buffer length:length];
free((void *)buffer);
return reversed;
^^^^^^^^^^^^^^^^
}
int main(int argc, const char * argv[])
{
char buf[100] = {"test"};
id s, a, b, c, d, e;
id pool = [[NSAutoreleasePool alloc] init];
//scanf("%s", buf);
s = [NSString stringWithUTF8String:buf];
a = [[ReversibleString alloc] initWithString:s];
b = [[ReversibleString alloc] initWithString:@"Reverse?"];
printf("%s\n", [a UTF8String]);
c = [[a reversedString] stringByAppendingString: b];
printf("%s\n", [c UTF8String]);
[pool release];
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.169.159.178
推
04/13 17:01, , 1F
04/13 17:01, 1F
→
04/13 17:02, , 2F
04/13 17:02, 2F
→
04/13 17:15, , 3F
04/13 17:15, 3F
→
04/13 17:16, , 4F
04/13 17:16, 4F
→
04/13 17:53, , 5F
04/13 17:53, 5F
→
04/14 21:11, , 6F
04/14 21:11, 6F
→
04/14 21:12, , 7F
04/14 21:12, 7F
→
04/15 18:26, , 8F
04/15 18:26, 8F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章