iOS9 SDKではUIGestureRecognizerのターゲットに弱い参照を使っている?

どうやらiOS9 SDKではUIGestureRecognizerのtargetを内部的には弱い参照に切り替えているようだ。そのため、何らかの形でtargetに弱い参照を禁止したクラスをセットするとクラッシュが発生する模様である。

これは基本的にはiOS9への以降の際には問題になることはないはずなのだが、一部のクラスや何らかのプロトコルを適用したクラスなどでは弱い参照を許容しないというものがあり、それらを指定した場合、以下のExceptionが発生してクラッシュする。

正直なところ、どういうクラス、あるいはどういうプロトコルを適用したら弱い参照を禁止になるのかについてはブラックボックス状態であり、当方でも見当がつかない状態である。

一時しのぎかつ強引な対処方法だが、問題のクラスの実装部分に以下を追加することである。

[code lang=”objc”]- (BOOL)allowsWeakReference {
return YES;
}[/code]

これで弱い参照が許容されるので、クラッシュ自体は免れるはずだ。

この方法はリジェクトを喰らうリスクが高まるため個人的には非推奨である。

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しております。仕事依頼や相談などについては、Contact Formよりお願いいたします。
スポンサーリンク

フォローする