我發現自己使用全局變量和nsrunloop的組合來強制同步整個應用程序。雖然它起作用,但對我來說似乎有點難看。有沒有其他方法可以達到相同的效果?iphone cocoa使用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預計ParkingSpots將被完全初始化,而runloop updatedlocation沒有正確初始化。使用runloop一切都按預期工作。
但是,這看起來很醜陋(在我的代碼中的各個點設置全局變量)。有沒有更優雅的解決方案?在此先感謝您的幫助!
@納森謝謝你的建議。我雖然關於使用通知,但對如何實現它們有點困惑。你認爲有可能發佈一些僞代碼以使其有點清晰嗎?提前致謝! – ennuikiller 2009-09-30 14:35:55
謝謝我使用nsnotifications和它的工作出色! – ennuikiller 2009-09-30 21:36:15