ボタンにブロックが接続されています(このカテゴリを使用):
__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
の時点で呼び出されるため、に割り当てるとnil 値が割り当てられます。だけに置き換えると、正常に動作します..(更新された値になります)が、保持サイクルが発生します..アイデア?originalPic = nil
weakPic
vc.pic
weakPic
originalPic
originalPic