iOS Facebook SDK не сохраняет делегата, вызывая EXC_BAD_ACCESS - PullRequest
2 голосов
/ 29 марта 2012

Я использую Facebook iOS SDK для проекта, и, если я получаю UIViewController после выполнения запроса, но перед получением ответа, я получаю EXC_BAD_ACCESS, когда он пытается увидеть, отвечает ли делегат на селектор.Ну, делегат UIViewController уже запущен, поэтому он, вероятно, больше не существует.

При исследовании этой проблемы я наткнулся на этот ответ здесь на SO, который говорит мне, что я не должениметь эту проблему, так как делегат сохраняется.Но ответ немного стар, и после этого они начали использовать дугу.Поэтому я проверил SDK и заметил, что они больше не сохраняют его.

Это известная проблема?Я что-то здесь упускаю?

Я попытался изменить SDK и сохранить делегата, и проблема исчезла.Тем не менее, я не люблю модифицировать сторонние библиотеки, поскольку у меня нет такого большого опыта, и я не уверен, действительно ли дуга является проблемой в этой ситуации (я думал, что нам не нужно использовать retaing / release / autoreleaseбольше).Кроме того, я подумал, что это Facebook SDK, если бы это была ошибка, кто-то должен был наткнуться на ту же проблему и решить ее.

РЕДАКТИРОВАТЬ: теперь я понимаю, что, по крайней мере, я использую версию SDK Facebookне использует дугу (я не знаю, поддерживают ли они это уже), и проблема может быть в следующем:

@property(nonatomic,assign) id<FBRequestDelegate> delegate;

Разве это не должно быть сохранено?

EDIT2: Яизвините, я пропустил другой ответ в том же посте, связанном ранее.

Кажется, то, что я указал, теперь устарело в новых версиях SDK.Похоже, что лучше всего отменить запрос.

1 Ответ

0 голосов
/ 29 марта 2012

Разве это не должно быть сохранено?

Абсолютно нет. Если бы вы сделали это, то, скорее всего, у вас был бы цикл сохранения (VC, владеющий FBRequest, которому принадлежит VC).

Вы на 100% правы, что правильно отменить запрос, когда контроллер представления освобожден, или, возможно, еще лучше установить делегат запроса на nil, а затем отменить его.

...