2013-12-11 64 views
0

我被困在這個問題上,請幫助我。 我有一個類名爲ViewController:FLViewController。在.m文件,我宣佈了一些其它接口:
在同一類的另一個接口訪問方法

@interface FLViewController (InternalMethods) 
- (void)updateButtonStates; 
@end 

@interface FLViewController (AVCaptureManagerDelegate) <AVCaptureManagerDelegate> 
-(void)adMobProcess 
@end 

在FLViewController的實施,我調用接口FLViewController (AVCaptureManagerDelegate)的方法adMobProcess但是編譯器說,「對於FLViewController無可見@interface聲明選擇adMobProcess

我可以將上面的方法移動到FLViewCOntroller的實現中(目前它被放置在AVCaptureManagerDelegate類中),但是我想知道如何在另一個類中調用該方法。

+0

最簡單的是隻聲明主界面中的所有方法。它們也可以在接口採用的協議中聲明 - 不會有衝突。如果您需要在另一個協議中調用某個方法,請先對其執行轉換。例如'[(id

回答

1

通過在.m文件中聲明您的類別(將其範圍限制爲該文件),您已經有效地爲FLViewController聲明瞭一些私有方法。如果這是你想要的,你不需要分類。

Objective-C中的分類意味着被重用。所以你想在一個頭文件(或多個文件)中聲明你的類別,並在你使用它們的任何.m文件中包含這些頭文件。

+0

謝謝,但我怎樣才能調用放在同一類的實現類別內的方法。在這裏我正在聲明一些類別.m文件。 – lenhhoxung

+0

如果您的類別是在.h文件中聲明的,那麼您只需包含該文件即可從類別中調用方法。我不確定如何使用.m文件中聲明的類別(主要是因爲這樣做似乎毫無意義。)爲什麼要使用私有類別? – Macondo2Seattle

+0

哦,通常我不這樣做,但我正在修復其他開發人員的bug :) – lenhhoxung

0

最後我找到了原因。我沒有在類別中聲明方法簽名,只是在類別實現塊中的方法實現。我聲明瞭方法並且它工作正常。

+0

我也注意到,不要忘記在您的Prefix.pch文件中,讓他們在「正確的順序」導入語句中 – Fattie

相關問題