Different behavior of __weak on NSURL and NSString
nsstring和nsurl在"弱"上有什么区别?
我的例子:
1 2 3 4 5 | __weak NSURL *myURL = [NSURL fileURLWithPath:@"/tmp"]; __weak NSString *myString = @"123"; NSLog(@"myURL: %@", myURL); NSLog(@"myString: %@", myString); |
结果:
2012-07-10 19:23:49.858 myApp[56093:303] myURL: (null)
2012-07-10 19:23:49.859 myApp[56093:303] myString: 123
为什么结果myString不等于(空)
这是因为示例中的字符串是一个永远不会释放的字符串文字。您的属性不保留字符串,但由于它没有被释放,它仍然指向您分配给它的值。
如果您已经使用
试试这个
nslog(@"myurl:%@",[myurl说明]);
nslog(@"mystring:%@",mystring);
因为"%@"用于表示nsstring而不是nsurl。