SOCKitライブラリを使用して、アプリケーションのURLルーターを実装しています。私はRouter
というカスタムクラスを持っていて、すべての有効なルートを追跡し、match
メソッドを実装しています。そのルートはNSString
で、対応するビューコントローラに一致します。作業を容易にするためには、一致可能なビューコントローラはRoutable
プロトコルを実装する必要があり、initWithState:
メソッドはNSDictionary
をパラメータとして必要とします。私はdebug
に構成されたアプリケーションを実行すると[pattern parameterDictionaryFromSourceString:route]
が期待されているものを生成し、デバッグビルドとリリースビルドの動作が異なります
- (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;
}
:ここに関連するコードです一方
[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
ありがとう!私はそれが今再び働いてうれしいです。 – cbrauchli