Перейти в Windows-> Показать представление-> Консоль или Alt + Shift + Q, C
Консоль появляется на вкладке с видом проблемы
You might have a NSMutableString (or some home-grown NSString subclass) that you want to duplicate.
NSMutableString *buffer = [NSMutableString string];
// do something with buffer
NSString *immutableStringToKeepAround = [NSString stringWithString:buffer];
Of course, you can also just make a copy:
NSMutableString *buffer = [NSMutableString string];
// do something with buffer
NSString *immutableStringToKeepAround = [[buffer copy] autorelease];
but you own the copy and must release or autorelease it.
As "Andy" points out in #318666, it's related to memory management, quoting:
The difference between initWithString and stringWithString is that stringWithString returns an auto-released pointer. This means that you don't need to release it specifically, since that will be taken care of next time that the auto-release pool cleans up any auto-released pointers.
initWithString, on the other hand, returns a pointer with a retain count of 1 - you do need to call release on that pointer, or else it would result in a memory leak.
(Taken from here)
Возвращает строку, созданную путем копирования символов из другой данной строки
[NSString stringWithString:@"some string"]
Это эквивалентно
[[[NSString alloc] initWithString:@"some string"] autorelease]
Кроме того, если у вас есть указатель на NSString, на самом деле это может быть подкласс NSString, например NSMutableString. Итак, если вы хотите сохранить строку и быть уверенным, что она не изменится, вам следует сделать ее копию, следовательно, stringWithString существует.
В качестве другого варианта использования, если (по какой-либо причине) вы создаете свой собственный подкласс NSString или NSMutableString, stringWithString:
предоставляет удобный способ создать его экземпляр с экземпляром либо NSString, NSMutableString, либо MyCustomString.
Я часто использую + stringWithString:
, когда мне нужно создать NSMutableString
, но начинать его с начального значения. Например:
NSMutableString * output = [NSMutableString stringWithString:@"<ul>"];
for (NSString * item in anArray) {
[output appendFormat:@"<li>%@</li>", item];
}
[output appendString:@"</ul>"];