作者naboo (大饼)
看板MacDev
标题[请益] 有关local variable的问题
时间Fri Apr 13 16:55:24 2012
看到书里写的一个范例程式,想请问一下为什麽在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
1F:推 Blueshiva:[NSString stringWithCharacters:length:]传回的已经 04/13 17:01
2F:→ Blueshiva:是autorelease的东西了 04/13 17:02
3F:→ naboo:原来如此,再请教一下,要怎麽知道传回的已经是autorelease 04/13 17:15
4F:→ naboo:的了?我查了一下Xcode里的Documentation也没看到 @@" 04/13 17:16
5F:→ yllan:convention 04/13 17:53
6F:→ Killercat:基本上绝大多数NS物件 用static唤起的都是含有下面 04/14 21:11
7F:→ Killercat:几个属性 : alloc init autorelease 04/14 21:12
8F:→ naboo:了解,谢谢大家热心的帮我解答 04/15 18:26