Не уверен, что я понимаю вопрос, но представленный код приведет к тому, что атрибут varName будет содержать любое значение, заданное в textField.text при вызове метода -test
. Если вы никогда не назначите ему другое значение, оно сохранит это начальное значение навсегда.
Ваша проблема может быть в том, что вы не используете синтезированные средства доступа.
Это:
@property (nonatomic, copy) NSString *varName;
... создает синтезированный метод доступа, который копирует объект NSString, переданный ему, путем создания другого экземпляра NSString и заполнения его значением прохода NSString. Однако это:
varName = textField.text;
... назначает varName на адрес строки, содержащейся в textField.Text. Ничего не копируется. Если textField.text изменяется, то меняется и varName, потому что два iVars имеют одинаковое строковое значение по одному и тому же адресу. Кроме того, когда textField.text освобождает строку, она также исчезает из varName.
Для копирования строки textField.text вам необходимо использовать:
self.varName = textField.text;
... чтобы вызвать синтезированный метод доступа, в котором есть функция копирования.
В общем, вы всегда должны использовать нотацию self.
при обращении к собственным свойствам класса, чтобы гарантировать, что они должным образом сохраняются / копируются / освобождаются и т. Д. Единственное исключение, конечно, если вы пишете свой собственный метод доступа ,