2011-07-18 13 views
0

私は単にobjective-c APIのいくつかをテストしようとしていますが、SUPによって生成された生成コードには未処理の例外に関するいくつかの問題があります。私は、次のコードで簡単なテストを設定している:iOSで未処理の例外

+(void)testPersonalizationKeys 
{ 
    TaskTracker_PersonalizationParameters *pp = nil; 
    pp = [TaskTracker_TaskTrackerDB 
    getPersonalizationParameters]; 
    pp.username = @"************"; 
    pp.password = @"************"; 
    [pp save]; 

    while([TaskTracker_TaskTrackerDB hasPendingOperations]) 
    { 
     [NSThread sleepForTimeInterval:1]; 
    } 

    [self printLogs]; 
} 

私はメインからこの静的メソッドを呼び出して、アプリケーションを実行しますが、アプリケーションがこのメッセージを表示して終了します。ここでは

Terminating app due to uncaught exception 'SUPReadWriteLock error', reason: 'attempt to unlock when not locked' 

がいっぱいですスタックトラック:

*** Call stack at first throw: 
(
    0 CoreFoundation      0x00a685a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x018fc313 objc_exception_throw + 44 
    2 TaskTracker       0x000c4b29 -[SUPReadWriteLock unlock] + 118 
    3 TaskTracker       0x00067356 +[TaskTracker_SubscriptionStatusfind:inTable:] + 1590 
    4 TaskTracker       0x00066d09 +[TaskTracker_SubscriptionStatusfind:] + 73 
    5 TaskTracker       0x00071256 -[TaskTracker_TaskTrackerDB packageIsSubscribed] + 70 
    6 TaskTracker       0x0006d561 +[TaskTracker_TaskTrackerDB packageHasSubscription] + 81 
    7 TaskTracker       0x00063981 -[TaskTracker_PersonalizationParameters save] + 1617 
    8 TaskTracker       0x00072f22 +[SampleApp testPersonalizationKeys] + 178 
    9 TaskTracker       0x00072a60 +[SampleApp runAPITests] + 272 
    10 TaskTracker       0x000023ea main + 138 
    11 TaskTracker       0x00002355 start + 53 
) 

誰もがiOSからSUP接続でこれを実行していますか?もしそうなら、あなたはどのように過去を過ごしましたか?

ご協力いただきましてありがとうございます。

+0

@tryと@catchブロックについて聞いたことがありますか? – Macmade

+0

問題は、このコードがブラックボックスであることです。私はそれに触れる必要はありません。私は "保証を壊す"必要はないと思っていたが、それは私の唯一の選択肢かもしれない。 – janarde

答えて

0

私のクラスでライブラリ関数をオーバーライドしたときも同様の例外がありました。

+0

あなたはそれを越えることができましたか?それがどんな機能だったのか覚えていますか? – janarde

+1

Objective Cのリリースよりも優先されるMBO操作には、「release」という名前を使用していました。それ以来、すべてのMBO操作に接頭辞「op_」を付けることにしました。D –