2012-02-19 14 views
1

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]は、空の辞書を生成します。私は本当にこれをデバッグする方法がわかりません。私は自分のコードをチェックして、debugreleaseビルドの間に明らかな違いがないかどうかを確認しました。また、SOCKit source codeも見ています。アイデア?ありがとう!

+0

申し訳ありませんが、これはhttps://github.com/jverkoey/sockit/commit/8e666d78ad6c888c72aaa00cdbadcd2da6ebf65dで修正されました。 – featherless

+0

ありがとう!私はそれが今再び働いてうれしいです。 – cbrauchli

答えて

2

私は今この問題に直面しました。私の場合は問題はリリースがブロックされたアサーションを構築することでしたが、-performSelector:onObject:sourceString:-parameterDictionaryFromSourceString:にこの重要なラインです:

NSAssert([self gatherParameterValues:&values fromString:sourceString], 
    @"The pattern can't be used with this string."); 

アサーションは、空命令に変換消え、および収集が起こることはありませんされている場合、。パラメータ値がなければ、それほど多くは起こりません!私は、次にそれを変更(およびGitHubのレポに問題を送信します):

if(![self gatherParameterValues:&values fromString:sourceString]) { 
    NSAssert(NO, @"The pattern can't be used with this string."); 
    return nil; 
} 


EDIT:issue #13として報告

+1

これはhttps://github.com/jverkoey/sockit/commit/8e666d78ad6c888c72aaa00cdbadcd2da6ebf65d – featherless

+0

で修正されています。良いキャッチ。私は何かが間違っていると気づいたときに危機に瀕していたので、SOCKitを使用しないようにいくつかのコードをハッキングしました。私は今SOCKitを使用することに戻ります! – cbrauchli

関連する問題