一直以来发现对copy和retain的区别还是觉得有点糊涂,,今天晚上花时间来研究这个问题.
最后问题是解决了,但是发现了个特别有意思的问题.看下面,
?
??? NSString *str = [NSString stringWithString:@" hello world"];
??? [str retain];
??? NSLog(@"str retain count = %u",[str retainCount]);
?
我想通过上面的代码看看retain后的str这个变量的retainCount,但是我发现不管有没有retain str,,结果总是: 2147483647
为什么呢??
第一反应, 2147483647这个数应该是 UINT_MAX ( Maximum value an `unsigned int'),但是为什么是它呢?
?
google了一下,有很多说法,比如
http://stackoverflow.com/questions/1390334/nsstring-retain-count
http://stackoverflow.com/questions/403112/objective-c-nsstring-property-retain-count-oddity
?
给出你的答案吧.
网友 2012/4/10 11:25:17 发表
原因很明显:NSString的retaincount为-1