0

所以我一直试图让我的类(TrackViewController)中的一个变量只初始化一次。这样做是为了让视图控制器知道数据库中插入的 id。

简而言之:

我有一个 TrackManager,它通过 NSNotificationCenter 接收位置更新。单击按钮时,TrackViewController 使用 startTracking 方法。该函数在我的 TrackManager 中设置,并返回数据库中新插入行的 id。

这个 id 应该由 TrackViewController 保存,这样当我回到我的应用程序的主屏幕然后再回到 TrackViewController 时,它仍然知道这个 id。这需要调用方法 stopTrack:(long)trackID 来停止跟踪该轨道的位置并将数据库列“TrackFinished”设置为已完成。

我想用静态变量来解决这个问题,但我不想。

有没有办法在 TrackViewController 中只初始化一次变量。我尝试过 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 回答