在.h文件中检测到.h文件中的方法时,如果在.m文件中使用该方法,则不会引发警告。
当方法仅在.m文件中声明时,如果在正在使用的方法下面声明了,则智能感知器不会检测到它。
为了避免警告,xcode中有一个标志,但我更喜欢不要禁用它。
有什么办法可以在.m中声明这些方法,以便被知识分子检测到并且没有警告?
感谢。
答案 0 :(得分:4)
两种解决方法:
使用class extension在.m文件的顶部声明私有方法:
@interface Foo ()
- (void)privateMethod;
@end
或者:升级到Xcode 4.3.1,其中包含更新版本的clang。这个较新版本的编译器不需要先前声明的方法来在同一个编译单元中调用它们。
类扩展仍然有利于兼容性或声明私有属性。
答案 1 :(得分:1)
您可以使用类别在类上声明其他方法。
例如,在.m文件的顶部添加:
@interface MyClass (PrivateCategory)
-(void)foo;
-(void)bar;
@end
会让Xcode知道MyClass
还会对foo
和bar
做出回应。 (PrivateCategory)
告诉编译器您正在添加应该在类别PrivateCategory
下“分组”的方法。你可以选择你想要的任何名字,甚至根本没有名字(虽然“匿名类别”的语义略有不同)。