我有一个附加到按钮的块(使用此类别):
__unsafe_unretained typeof(UIImage) *weakPic = originalPic;
[button addEventHandler:^{
switch (state) {
case state1:
{
UIViewController *vc = //some VC
vc.pic = weakPic; // weakPic is nil at this point
// putting originalPic here would solve my problem
// but then I would have a retain cycle
}
case state2:
{
// other stuff
}
}
}];
与按钮相关的动作因状态而异。
这是问题所在:我必须保留上述__unsafe_unretained
内容以避免保留周期。但是,此代码在 .. 处被调用,originalPic = nil
因此当我分配weakPic
给vc.pic
它时,我为其分配了一个 nil 值。如果我weakPic
用 just替换originalPic
,那么它可以正常工作..(originalPic
将具有更新的值)但是我得到了保留周期.. 想法?