Как установить делегат FBRequest на ноль в нескольких различных объектах - PullRequest
0 голосов
/ 20 ноября 2011

Я использую Facebook SDK для IOS, и я столкнулся с проблемой, как безопасно установить делегата на ноль. Мой объект facebook является свойством appDelegate, и я использую этот объект в нескольких различных объектах для получения различной информации. Итак, предположим, что объекты A, B и C соответствуют протоколу FBRequest и установлены в качестве делегата объекта facebook. Теперь в методе dealloc объекта A я хочу убедиться, что объект A больше не является делегатом, поэтому я могу сделать это: facebookObj.delegate = nil. Однако я чувствую, что это повлияет на другие объекты делегата B и C. Правильно ли я думаю? Есть ли способ удалить только объект A из делегатов facebook, не затрагивая объекты B и C? Надеюсь, что вопрос имеет смысл. Большое спасибо.

1 Ответ

0 голосов
/ 29 декабря 2011

Я думаю, что у вас есть отдельный объект FBRequest для каждого запроса, который вы запускаете из своих объектов A, B и C, нет?Из того, что я понимаю, объект FBRequest живет только во время обработки запроса.Когда он завершится или провалится, объект исчезнет, ​​нет?Теперь, конечно, если вы сохраните ссылку на этот запрос, он будет выглядеть там, где он есть, потому что у вас есть адрес к нему, но если вы попытаетесь отправить сообщения, он потерпит крах (если не использовать ARC со слабыми ссылками, в которых я сомневаюсьвы используете).

Попробуйте это для каждого из ваших объектов (A, B и C):

NSLog(@"FBRequest address %@", your_fbrequest_object);

и посмотрите, всегда ли печатается один и тот же адрес или разные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...