2012-03-30 56 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