1

__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: (ヌル)

2012-07-10 19:23:49.859 myApp[56093:303] myString: 123

結果が myString == (null) でないのはなぜですか

4

2 に答える 2

6

これは、例の文字列が決して解放されない文字列リテラルであるためです。プロパティは文字列を保持しませんが、解放されないため、割り当てた値を指しています。

を使用して文字列を作成した場合[NSString stringWithFormat:@"hello"];、期待される動作が表示されます。

于 2012-07-10T17:34:08.673 に答える
-1

これを試して

NSLog(@"myURL: %@", [myURL の説明]);

NSLog(@"myString: %@", myString);

「%@」は、NSURL ではなく NSString を表すために使用されます。

于 2012-07-10T19:06:33.477 に答える