A quick update; I found that it is better to run the checking method on a timer rather than a while loop since the number of calls per unit time performed by the while loop is simply excessive. The startPatrollingExtent method looks like this with a timer:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(checkExtent) userInfo:nil repeats:YES];
while (stateTrooper == patrolling)
{
[[NSRunLoop currentRunLoop] run];
}
[pool drain];