Правильно ли присваивать self.string = @ "" @property? - PullRequest
3 голосов
/ 25 августа 2011

Философский вопрос, своего рода. Правильно ли присвоить постоянную строку @property, который (сохраняется) Или я должен сделать self.string = [NSString stringWithString:@""];

Есть ли утечка памяти? Что если он переиздан?

Это постоянная строка, поэтому она ведет себя так же, как объект NSString?

Если свойство (assign) означает, что оно не будет действительным после цикла выполнения?

1 Ответ

6 голосов
/ 25 августа 2011

Да, все в порядке. Независимо от того, каким образом вы это сделаете, константная строка все равно будет скомпилирована в вашу программу (потому что вы все равно должны использовать ее в [NSString stringWithString:@""]). Константные строки на самом деле не сохраняются / освобождаются, но важна их семантика: вы присваиваете строку (которая, насколько вам известно, имеет чистый +0 retainCount - у вас нет alloc Это значит, что вы не являетесь владельцем) собственности, которая будет владеть ею. Если свойство равно (assign), то оно все еще может работать с константной строкой, но будет семантически недопустимым после истощения пула автоматического выпуска.

...