Iphone TextField.text

у меня есть этот код в моем приложении, где я помещаю текстовое поле текста в свое свойство NSString.

iname = textField. text;

после этого в какой-то момент я делаю это, чтобы убедиться, что строка не пуста

[iname isEqualToString: @ ""]

проблема в том, что если текстовое поле содержит одно слово без пробела, оно прекрасно работает если есть место, он падает! и я не могу понять, почему?

, пожалуйста, помогите! Большое вам спасибо

1
задан Peter Hosey 23 August 2010 в 09:14
поделиться

2 ответа

Использование геттера для правильного решения проблемы

self.iname = textField.text;

1
ответ дан 2 September 2019 в 21:55
поделиться
iname = textField.text;

iname - это переменная экземпляра, верно? Если так, то вам нужно принять право совладения этой строкой, чтобы строка не умерла, когда текстовое поле перестанет владеть ею (что произойдет, если что-либо, включая пользователя, заменит значение текстового поля для text новым значением - новой строкой). Простое присвоение указателя строки одной из ваших переменных экземпляра не влечет за собой права собственности на строку. Дополнительные сведения см. в Руководстве по программированию управления памятью для Cocoa Touch.

Если вы этого не сделаете, то ваша программа аварийно завершит работу, когда вы попытаетесь отправить сообщение уже умершему объекту, указатель на который находится в iname.

после этого в какой-то момент я делаю это, чтобы убедиться, что строка не пуста

[iname isEqualToString:@""]

... например.

проблема в том, что если текстовое поле содержит одно слово без пробела, то оно работает отлично, если пробел есть, то происходит сбой!

Иногда может быть элемент случайности в том, проявляется ли сбой.

Доказать мою теорию можно, запустив ваше приложение под инструментом Instruments's Zombies. Этот инструмент заставляет объекты без владельцев не умирать (деаллоцироваться), а становиться зомби. Когда вы отправите сообщение зомби, вы получите флаг на временной шкале Instruments, который вы можете использовать для изучения объекта и его истории, чтобы выяснить, почему он умер раньше, чем должен был, или почему вы все еще держитесь за него после смерти.

1
ответ дан 2 September 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: