我陷入了一个奇怪的问题。我目前正在研究iPhone上的mapkit。我需要在我的地图中显示两条路线,其中有一个来源城市和两个不同的目的地。对于两个城市之间的路线,我的代码很好。为此目的在我的代码中的一个地方,我正在这样做......。将多个字符串传递给stringByEvaluatingJavaScriptFromString的问题
- (void)loadWithStartPoint:(NSString *)startPoint endPoint:(NSString *)endPoint options:(UICGDirectionsOptions *)options {
[googleMapsAPI stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"loadDirections('%@', '%@', %@)", startPoint, endPoint, [options JSONRepresentation]]];
}
在上面的代码中,stringByEvaluatingJavaScriptFromString将javascript传递给我的委托方法,因为绘制了哪条路径。 现在,我已经得出两种不同的路线,为此我在上面的代码改变这样的..
- (void)loadWithStartPoint:(NSString *)startPoint endPoint:(NSMutableArray *)endPoints options:(UICGDirectionsOptions *)options {
for (int idx = 0; idx < [endPoints count];idx ++)
{
NSString* msg = [NSString stringWithFormat:@"loadDirections('%@', '%@', %@)", startPoint, [endPoints objectAtIndex:idx], [options JSONRepresentation]];
mstr = [msg retain];
if (idx == 0)
{
[googleMapsAPI stringByEvaluatingJavaScriptFromString:msg];
}
else {
[NSThread detachNewThreadSelector:@selector(loadroute:) toTarget:self withObject:mstr];
}
}
}
我有以下的创建和实现NSThread。
-(void)loadroute :(NSString *)message
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(loadComplete:) withObject:message waitUntilDone:YES];
[pool release];
}
-(void)loadComplete:(NSString *)message
{
[googleMapsAPI stringByEvaluatingJavaScriptFromString:message];
}
在这里,我创建了另一个线程由于我将能够通过字符串分别stringByEvaluatingJavaScriptFromString。 但只有最后一个字符串被传递给委托方法。我错过了什么?请帮助我。自上周以来,我陷入了这个奇怪的问题。任何帮助,将不胜感激。 Thnx提前。
Thnx Ali为我展示了NSThread&NSOperationQueue的清晰画面。我会尝试使用你建议的任何一种方式。 – iCoder4777