iOS アプリで Swift 3 と ARC を使用していますが、オブジェクトを手動で保持したいと考えています。
object.retain() を試しましたが、Xcode は ARC モードでは使用できないと言っています。これを行う別の方法はありますか?
長いバージョン:
CLLocationManager のデリゲートとして自身を登録する LocationTracker クラスがあります。ユーザーの場所が変更されると、場所という名前の静的変数が更新されます。場所を必要とするコードの他の部分は、LocationTracker インスタンスへの参照を持たない、または必要とせずに、この静的変数にアクセスします。
この設計の問題は、デリゲートが保持されないため、CLLocationManager がメッセージを送信するまでに LocationTracker の割り当てが解除され、クラッシュが発生することです。
デリゲートとして設定する前に、LocationTracker の refcount を手動でインクリメントしたいと思います。アプリが実行されている限り場所を監視する必要があるため、オブジェクトの割り当てが解除されることはありません。
LocationTracker への参照を保持する静的変数「インスタンス」を持つという回避策を見つけました。「インスタンス」変数を使用するつもりはないので、この設計は洗練されていないと考えています。それを取り除き、refcount を明示的にインクリメントすることはできますか?
もう一方の質問はObjective-Cに関するもので、これはSwiftに関するものであるため、この質問は重複していません。