0

そのため、クラス(TrackViewController)の変数を1回だけ初期化しようとしています。これは、データベースから挿入されたIDをビューコントローラに認識させるために行われます。

要するに:

NSNotificationCenterを介して位置の更新を受信するTrackManagerがあります。TrackViewControllerは、ボタンがクリックされたときにstartTrackingメソッドを使用します。この関数は私のTrackManagerで設定され、データベースに新しく挿入された行のIDを返します。

このIDは、アプリケーションのメイン画面に戻ってからTrackViewControllerに戻ったときに、このIDを認識できるように、TrackViewControllerによって保持される必要があります。これは、メソッドstopTrack:(long)trackIDを呼び出して、そのトラックの位置の追跡を停止し、データベース列「TrackFinished」をfinishに設定するために必要です。

私は静的変数を使用してこれを解決しようと思いましたが、むしろしたくありません。

TrackViewControllerで変数を1回だけ初期化する方法はありますか?awakeFromNib、ViewDidLoadなどを試しましたが、TrackViewController画面が表示されるたびにこれらのメソッドが呼び出されます。

よろしくお願いします

4

1 に答える 1

1

このようなものをviewDidLoadメソッドまたはinitMethodに入れてみてください。もちろん、NSObjectを変数のタイプに置き換えます。

static dispatch_once_t pred;
static NSObject *shared = nil;
dispatch_once(&pred, ^{
    shared = [[NSObject alloc] init];
});

別のアプローチは、変数がすでに割り当てられているかどうかを確認することです。

if (!variable)
    variable = [[NSObject alloc] init];
于 2012-04-24T07:14:37.630 に答える