Проблема, с которой вы столкнулись, связана с управлением памятью.У меня была именно эта проблема раньше.
Когда вы NSLog uid, вы получаете адрес для объекта WebView.Почему это происходит, когда uid является строкой NSString ???Позвольте мне познакомить вас с магией управления памятью: D
Когда вы установили переменную uid в этой строке:
uid = [uid stringByReplacingOccurrencesOfString:@"-" withString:@""];
То, что вы сделали, - это присвоение автоматически выпущенной переменнойUID.Это означает, что он будет освобожден, и это место в памяти будет доступно для захвата.Между окончанием работы этой функции и последующим доступом к ней она была выпущена и что-то еще там было сохранено.
Как это исправить?Когда вы присваиваете что-то свойству, например, uid, ВСЕГДА делаете это с помощью методов установки, созданных объявлением @property.Используйте либо self.uid = string
, либо [self setUid:string
.Это правильно освободит старую строку и сохранит новую.
Это проблема, которая стоила мне МНОГО МНОГО часов, пытаясь найти проблемную строку.Еще один симптом, который может возникнуть, - сбой программы при попытке отправить сообщение освобожденному объекту.Их может быть ОЧЕНЬ сложно отследить.Надеюсь, мой ответ поможет вам, и вам не придется терпеть это разочарование:)
Удачи!