2012-03-30 74 views
1

如果.h文件中聲明的方法被intelisense檢測到,並且在.m文件中使用該方法時不會引發警告。如何在界面之外的目標c中聲明方法?

當方法僅在.m文件中聲明時,如果在正在使用的方法下方聲明,則intelisense不會檢測到它。

爲了避免警告xcode中有一個標誌,但我寧願不要禁用它。

有什麼方法可以在.m中聲明方法以便被intelisense檢測到而沒有警告?

謝謝。

回答

4

兩種方式來解決這個問題:

或者:使用class extension在.m文件的頂部聲明私有方法:

@interface Foo() 

- (void)privateMethod; 

@end 

或者:升級到4.3.1的Xcode,其中包含鏗鏘的更新版本。這個較新版本的編譯器不需要先前聲明的方法在同一個編譯單元中調用它們。

儘管如此,類擴展仍然適用於兼容性或聲明私有屬性。

1

您可以使用一個類別在類上聲明其他方法。

例如,在您.m文件的頂部添加此:

@interface MyClass (PrivateCategory) 

-(void)foo; 
-(void)bar; 

@end 

會讓Xcode中知道MyClass還響應foobar(PrivateCategory)告訴編譯器,您正在添加應在類別PrivateCategory下「分組」的方法。你可以選擇任何你想要的名字,甚至沒有名字(儘管「匿名類別」的語義略有不同)。

+0

感謝您的回答!但是直接在實現文件中,這有可能嗎? – NemeSys 2012-03-30 17:24:52

+1

由於引入了類擴展,所以私有聲明的專用機制應該是首選的。 – 2012-03-30 17:26:40

+1

@NemeSys,是的。任何聲明都可以放在'.m'文件中。您通常將全局聲明放在.h文件中,因爲您可以將這些聲明包含在其他文件中;但無論在.h文件中有效,在.m文件中也是有效的。 – zneak 2012-03-30 17:29:03