我正在使用SOCKit庫爲我的應用實現URL路由器。我有一個自定義的Router
類,用於跟蹤所有有效路線,並實施match
方法,該方法在給定路線NSString
的情況下將其與相應的視圖控制器相匹配。爲了使事情更容易,匹配的視圖控制器必須實現Routable
協議,該協議需要採用NSDictionary
作爲參數的initWithState:
方法。下面是相關的代碼:調試和發佈版本之間的不同行爲
- (id)match:(NSString *)route
{
for (NSArray *match in routePatterns) {
const SOCPattern * const pattern = [match objectAtIndex:kPatternIndex];
if ([pattern stringMatches:route]) {
Class class = [match objectAtIndex:kObjectIndex];
NSLog(@"[pattern parameterDictionaryFromSourceString:route]: %@", [pattern parameterDictionaryFromSourceString:route]);
UIViewController<Routable> *vc;
vc = [[class alloc] initWithState:[pattern parameterDictionaryFromSourceString:route]];
return vc;
}
}
return nil;
}
當我運行與debug
配置的應用,[pattern parameterDictionaryFromSourceString:route]
產生的期望是什麼:
[pattern parameterDictionaryFromSourceString:route]: {
uuid = "e9ed6708-5ad5-11e1-91ca-12313810b404";
}
在另一方面,當我運行該應用程序會與release
配置, [pattern parameterDictionaryFromSourceString:route]
產生一個空字典。我真的不知道如何調試。我檢查了自己的代碼,看看debug
和release
構建之間是否存在任何明顯差異,並且也查看了SOCKit source code。想法?謝謝!
對不起,這已經在https://github.com/jverkoey/sockit/commit/8e666d78ad6c888c72aaa00cdbadcd2da6ebf65d中修復了。 – featherless 2012-04-25 18:53:26
謝謝!我很高興它現在再次運作。 – cbrauchli 2012-04-27 15:50:37