根据在Objective-C中为类定义私有方法的最佳方法,我一直在类扩展中声明私有方法.
但是,我刚刚意识到,在Xcode 4中,如果我完全忽略私有方法的声明并且只是实现它,那么应用程序将编译并运行而不会发出警告或错误.
那么,我是否应该在类扩展中声明私有方法呢?
为什么我们必须要声明方法呢?在Java中,你没有......在Ruby中也没有.
我注意到Xcode(或更确切地说是Apple LLVM编译器?)不再需要正向方法声明.换句话说,以下代码构建时没有警告:
@implementation Foo
-(void) foo {
[self bar];
}
-(void) bar {}
@end
Run Code Online (Sandbox Code Playgroud)
这曾经发出警告-foo说Foo可能没有回应-bar,对吧?编译器现在更聪明还是其他的东西?我正在使用Xcode 4.3.1和Apple LLVM编译器3.1.
在Xcode 4.3之前,如果您想在声明其实现之前使用方法,则需要转发声明方法(与C函数原型一样).这通常在类继续(AKA类扩展,私有类别)中完成.这个问题有一个很好的例子:Objective-C中的私有方法,在Xcode 4.3中我不再需要在我的实现文件中声明它们了吗?.
从4.3开始,不再需要这个; 干燥者欢欣鼓舞.
但这种魔法可以关闭,回到4.3之前的行为吗?
我正在寻找类似于@protectedfor 方法的东西。@protected似乎只适用于@properties(setter 和 getter)。有没有办法让常规方法也获得类似的行为?