我发现自己使用全局变量和 nsrunloop 的组合来强制在整个应用程序中进行同步。虽然它有效,但对我来说似乎有点难看。有没有其他方法可以达到相同的结果?
这是一个典型的例子:
ParkingSpots *parkingSpots = [[[ParkingSpots alloc] initWithMapViewController:self] autorelease];
keepRunning = YES;
NSRunLoop *theRL = [NSRunLoop currentRunLoop];
while (keepRunning && [theRL runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);
UpdateLocation *updatedLocation = [[[UpdateLocation alloc] initWithUserid:@"me" andCoordinate:annotation.coordinate withMapViewController:self]
autorelease];
NSLog(@"Lat = %f, Long = %f",annotation.coordinate.latitude,annotation.coordinate.longitude);
[updatedLocation sendUpdate];
在这段代码中,我需要等到parkingSpots 对象完全初始化后再初始化updateLocation。由于 updatelocation 期望parkingSpots 被完全初始化,没有runloop updatedlocation 没有正确初始化。使用 runloop,一切都按预期工作。
然而,这对我来说看起来很丑陋(在我的代码中的不同点设置一个全局变量)。有没有更优雅的解决方案?在此先感谢您的帮助!