Ios 目标C中的方法顺序
我如何在objective-C(主要是在实现文件中)中排序方法是否重要Ios 目标C中的方法顺序,ios,objective-c,Ios,Objective C,我如何在objective-C(主要是在实现文件中)中排序方法是否重要 所以在这样的情况下,我首先选择哪一个(取消或完成)显然无关紧要,但我想知道这是否适用于所有方法?编译器只是通读所有内容,然后采取行动,还是在某些情况下,将一个方法放在另一个方法之前会产生不同的结果?我不知道在Objective-C中这一点有什么关系。在常规C中,在使用方法之前需要声明方法,所以 void usesUndeclared() { undeclaredFunction(); } void undecla
所以在这样的情况下,我首先选择哪一个(取消或完成)显然无关紧要,但我想知道这是否适用于所有方法?编译器只是通读所有内容,然后采取行动,还是在某些情况下,将一个方法放在另一个方法之前会产生不同的结果?我不知道在Objective-C中这一点有什么关系。在常规C中,在使用方法之前需要声明方法,所以
void usesUndeclared() {
undeclaredFunction();
}
void undeclaredFunction() {}
这将是一个错误,但是
void undeclaredFunction;
void usesUndeclared() {
undeclaredFunction();
}
void undeclaredFunction() {}
我不知道在Objective-C中它在什么情况下是重要的。在常规C中,您需要在使用方法之前声明它们,所以
void usesUndeclared() {
undeclaredFunction();
}
void undeclaredFunction() {}
这将是一个错误,但是
void undeclaredFunction;
void usesUndeclared() {
undeclaredFunction();
}
void undeclaredFunction() {}
在
@实现
和@接口
部分,方法的顺序并不重要
- 在
部分,这并不重要,因为那里的方法之间没有依赖关系@interface
- 在
部分,这并不重要,因为@implementation
部分(可能与类扩展@interface
结合使用)列出了编译器的所有方法,提供了它们的签名并消除了潜在的歧义@interface
- 最后,编译器允许您在实现部分本身定义完全“私有”的方法。编译器足够聪明,可以预见这些添加的方法
- 无论是在
@实现
还是在@接口
部分,方法的顺序都无关紧要
- 在
部分,这并不重要,因为那里的方法之间没有依赖关系@interface
- 在
部分,这并不重要,因为@implementation
部分(可能与类扩展@interface
结合使用)列出了编译器的所有方法,提供了它们的签名并消除了潜在的歧义@interface
- 最后,编译器允许您在实现部分本身定义完全“私有”的方法。编译器足够聪明,可以预见这些添加的方法
-(void) methodA;
{
[self methodB];
}
-(void) methodB;
{
//Do stuff
}
您将收到一条警告,提示未定义methodB
如果在@界面中声明了methodB
,您就没事了
较新版本的Clang编译器能够处理前向引用。我不记得到底是哪个版本的Xcode包含了这个更改。也许是Xcode 4.6?它过去很重要,但现在不重要了。这是因为编译器,而不是语言
过去,您必须在使用方法之前声明它。因此,如果你有
-(void) methodA;
{
[self methodB];
}
-(void) methodB;
{
//Do stuff
}
您将收到一条警告,提示未定义methodB
如果在@界面中声明了methodB
,您就没事了
较新版本的Clang编译器能够处理前向引用。我不记得到底是哪个版本的Xcode包含了这个更改。也许是Xcode 4.6?这在目标CYE中是不正确的。我说的是“常规C”。这在客观的CYE中是不正确的。我说的是“常规C”。我不太明白你的最后一点:因为@interface列出了编译器的所有方法。过去是这样的。但不是任何最新的Xcode版本。@user523234您是对的,这值得特别提及。谢谢不太理解您的最后一点:因为@interface列出了编译器的所有方法。过去是这样的。但不是任何最新的Xcode版本。@user523234您是对的,这值得特别提及。谢谢