在__weak上,NSString和NSURL之间的区别是什么?
我的例子:
__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 ==(null)
答案 0 :(得分:6)
这是因为您示例中的字符串是字符串文字,永远不会被释放。 您的属性不保留字符串,但由于它没有被释放,它仍然指向您指定的值。
如果您使用[NSString stringWithFormat:@"hello"];
创建了字符串,那么您会看到预期的行为。
答案 1 :(得分:-1)
试试这个
NSLog(@“myURL:%@”,[myURL description]);
NSLog(@“myString:%@”,myString);
因为“%@”用于表示NSString而不是NSURL。