VKCOM / vk-ios-sdk

iOS library for working with VK API, authorization through VK app, using VK functions
MIT License
298 stars 165 forks source link

Fix retain cycle between VKRequest and VKError #513

Closed constZinovyev closed 6 years ago

constZinovyev commented 7 years ago

В методе providerError класса VKRequest вызывается следующий код:

error.vkError.request = self;
self.error = error;

Образуется retain cycle, из-за которого в памяти висит VKShareDialogController.

Usipov commented 6 years ago

@RomanTruba, посмотри ПР, плиз oneliner, а висит 4 месяца почти!

Usipov commented 6 years ago

Thanks!!!

oleg-derevenetz commented 6 years ago

Плохой, негодный коммит. Ломает лямбду block, потому что self-то у нас не на стеке, а к моменту вызова block() self.error уже null, соответственно в клиентский errorBlock() приходит в качестве error null. Нужно тогда либо перенести это присваивание в конец лямбды, либо сначала присваивать self.error локальной переменной, а в block использовать именно ее.

Usipov commented 6 years ago

@constZinovyev