В дополнение к ответу Оскара Гомеса, обратите внимание, что когда вы используете методы класса (те методы со знаком плюс, которые вы можете найти в документации и не включены в список Оскар Гомес , например, stringWithFormat
- этоодин из них), вам не нужно беспокоиться об управлении памятью.Если вы создаете свой собственный метод класса, вы должны сделать то же самое: вернуть объект автоматического выпуска.
Что касается вашего кода, он не сможет работать, если вы просто назначите свой ivar объекту NSString
(возвращенному из этого метода),Фактически, в какой-то момент цикла вашего приложения объект будет освобожден (он был помещен в пул), и ваш ивар больше не будет ссылаться на какой-либо объект.
Хитрость: создайте @property
сполитика copy
или отправка сообщения copy
, например:
myVar = [[NSString stringWithFormat:@"%@",theValue] copy];
Копирование обычно используется, когда класс имеет подклассы изменяемого типа.В противном случае используйте retain
.Когда вы закончите, у вас есть имущество для этого объекта, и вы должны помнить, чтобы освободить его.Если вы этого не сделаете, вы вызовете утечку.
[myVar release];
PS Начиная с Xcode 4.2, появилась новая функция компилятора под названием ARC.
Надеюсь, это поможет.