如果這是一個完全不符合標準的問題,或者我的信息不足 - 我對iOS開發(和Objective-C)非常陌生,並且有跳入深結...在這段代碼中導致「錯過的方法」的原因是什麼?
我無法理解在GameCenterManager.m的「callDelegate」的代碼是在GKTapper示例代碼,並在此TUTS +教程還提供這是代碼:
- (void) callDelegate: (SEL) selector withArg: (id) arg error: (NSError*) err
{
assert([NSThread isMainThread]);
if([delegate respondsToSelector: selector])
{
if(arg != NULL)
{
[delegate performSelector: selector withObject: arg withObject: err];
}
else
{
[delegate performSelector: selector withObject: err];
}
}
else
{
NSLog(@"Missed Method");
}
}
我的應用程序總是記錄「Missed Method」行,但我不確定什麼t他的callDelegate代碼實際上在做(所以我不能修復它)。我想最好的方法是學習這是什麼實際上在做什麼,並獲得比'錯過的方法'更好的輸出...
一個警告是,我的應用程序目前在沙箱模式下使用Game Center,因爲我仍在開發它。在這種情況下可能會出現這種「錯過的方法」路線 - 我也不確定。
有人能將這段代碼翻譯成段落形式嗎?我特別不確定'[delegate respondsToSelector:selector]'片段。
或者,任何人都可以重寫NSLog行,以便輸出更多/相關的問題細節?我想這在看到哪個選擇不通過「respondsToSelector」走出正確的希望,但它似乎沒有工作:
NSLog(@"Missed Method, %@", selector);
從[kylehickinson]幫助(http://twitter.com/#!/kylehickinson),這竟然是由於來自'authenticateLocalUser'的對'processGameCenterAuth'的可選調用(提供在登錄時執行某些操作的選項)。刪除'processGameCenterAuth'的引用解決了這個問題。 – 2011-06-12 17:52:25
你能解釋一下你究竟刪除了什麼嗎?我得到了同樣的錯誤...乾杯.. – user123 2012-09-01 11:25:50
詹姆斯,請你告訴我們你到底做了什麼,我也得到這個問題 – PeterK 2012-12-29 13:12:00