我一直花費數天的時間從故事板上的按鈕連接到IOS項目中的新NSObject類。我在OS X中使用的方法不再適用於IOS。連接到不在「有效連接目標」的IOS IBAction
我沒有問題連接到原始UIViewController類的IBAction的按鈕。根據Apple文檔,我的新課程不是「有效的連接目的地」。
要解決此問題,我嘗試從UIViewController類的新類中調用該方法。我嘗試通知和委託計劃,使用堆棧溢出的帖子,但無法讓他們工作。
我來連接到目標A +級方法最接近,如
+ (void) startToneGenerator
{
NSLog(@"Arrived in startToneGenerator");
// [self startPlay:nil];
}
然而,從方法內我不能把在同一類的-startPlay。由於-StartPlay類是音頻單元結構的一部分,我無法將其更改爲+ starPlay類而不會破壞音頻單元。
任何人都可以向我指出一些描述「有效連接目的地」真正意義的文檔,以及如何使嘗試的連接成爲有效的連接。
我以前在OS X,在它的工作中回答1建議的方法,但它不再是IOS工作。 我重申了您澄清問題的代碼。
// code in VC
- (IBAction)RunPauseStop:(id)sender
{
NSLog(@"arrived in RunPauseSTop"); // OK
[uToneGenerator testMethod]; // OK
// [uToneGenerator startPlay:self]; // crashes
}
// code in uToneGenerator
+ (void) testMethod
{
NSLog(@"arrived in <testMethod>"); // OK
// [uToneGenerator startPlay:nil]; // crashes
}
- (IBAction)startPlay:(id)sender
{
NSLog(@"arrived in <startPlay>"); // Don't get here
}
該行[uToneGenerator startPlay:nil];編譯(帶有警告)而崩潰,並:
2012-03-06 13:20:25.509耳鳴馴IP [863:F803] + [uToneGenerator startPlay:]:無法識別的選擇發送到類0x6c40 2012-03- 06 13:20:25.509耳鳴馴IP [863:F803] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因: '+ [uToneGenerator startPlay:]:無法識別的選擇發送到類0x6c40'
從主叫測試方法;編譯但崩潰: 2012-03-06 13:22:31.413 Tinnitus Tamer IP [885:f803] + [uToneGenerator startPlay:]:無法識別的選擇器發送到類0x6c44 2012-03-06 13:22:31.414 Tinnitus Tamer IP [885:F803] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: '+ [uToneGenerator startPlay:]:無法識別的選擇發送到類0x6c44'
我注意的是,該錯誤信息無法找到+ [uToneGenerator startPlay :,但我想調用的方法是 - [uToneGenerator startPlay:
uToneGenerator * UTG = [[uToneGenerator人LOC] INIT];行得通。儘管編譯器警告「NSProject可能不會響應'startPlay'。
感謝您的幫助。非常感謝。我真的被卡住了。