Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C中的方法顺序_Ios_Objective C - Fatal编程技术网

Ios 目标C中的方法顺序

Ios 目标C中的方法顺序,ios,objective-c,Ios,Objective C,我如何在objective-C(主要是在实现文件中)中排序方法是否重要 所以在这样的情况下,我首先选择哪一个(取消或完成)显然无关紧要,但我想知道这是否适用于所有方法?编译器只是通读所有内容,然后采取行动,还是在某些情况下,将一个方法放在另一个方法之前会产生不同的结果?我不知道在Objective-C中这一点有什么关系。在常规C中,在使用方法之前需要声明方法,所以 void usesUndeclared() { undeclaredFunction(); } void undecla

我如何在objective-C(主要是在实现文件中)中排序方法是否重要


所以在这样的情况下,我首先选择哪一个(取消或完成)显然无关紧要,但我想知道这是否适用于所有方法?编译器只是通读所有内容,然后采取行动,还是在某些情况下,将一个方法放在另一个方法之前会产生不同的结果?

我不知道在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您是对的,这值得特别提及。谢谢