Если у меня есть методNSString * строка = @ "SomeString" против NSString * строка = [[NSString Alloc] initWithFormat @ "% @", строка]
- (void) myMethod:(NSString *)string {
[Object anothermethodWithString:string];
}
и я называю
[Object myMethod:@"this is a string with no alloc statement"]
мне нужно сделать что-то вроде
- (void) myMethod:(NSString *)string {
NSString *string2 = [[NSString alloc] initWithFormat:@"%@", string];
[Object anothermethodWithString:string2];
[string2 release];
}
вместо пути я MyMethod раньше? У меня неправильный код, который, по-видимому, вызван тем, что строка автоматически освобождается, а второй метод в другом методе вызывается (как в примере). Во-вторых, у меня есть myMethod, который исправил все мои проблемы.
Значит, строка «non-alloc» является автоматически выпущенной строкой? Я задал этот вопрос в качестве ответа на другой вопрос (который был совершенно не связан и почему я создаю этот пост), и несколько источников сказали, что мне не нужно перераспределять строку. Я смущен, потому что поведение моего кода говорит мне об обратном.
Вы вызывали 'new',' alloc', 'keep' или' copy' для создания строки? Если нет, то вы не отвечаете за его освобождение. Константные строки ('@" "') являются глобальными и постоянными. –
Нет Я не вызывал ни одного из этих методов в строке, переданной в myMethod. Моя постоянная строка @ ", похоже, перезаписывается. –