iOS编译顺序

iOS编译顺序,ios,objective-c,Ios,Objective C,这是我在iOS编程的第一天。我来自C++,有一个特别愚蠢的问题。编译器是如何工作的以及如何处理代码的? 我是如何理解的,从公共接口开始,然后继续到私有接口。实施如何运作?方法?视图控制器是C++中的主要功能,它在开始时使用了所有的方法? 这是我的viewController.h和.m。这个程序已经有了一些其他的类和动作按钮。也许有人可以一步一步地解释。谢谢 ViewController.h #import <UIKit/UIKit.h> #import <Foundation/

这是我在iOS编程的第一天。我来自C++,有一个特别愚蠢的问题。编译器是如何工作的以及如何处理代码的? 我是如何理解的,从公共接口开始,然后继续到私有接口。实施如何运作?方法?视图控制器是C++中的主要功能,它在开始时使用了所有的方法? 这是我的viewController.h和.m。这个程序已经有了一些其他的类和动作按钮。也许有人可以一步一步地解释。谢谢

ViewController.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface ViewController : UIViewController


@end

<>程序代码的开始与C++类似,它是C的非常重要的功能。 在main中,框架被调用(通过对
UIApplication
或子类对象进行身份验证),应用程序类和应用程序委托类的名称被移交给框架。cocoa touch框架将首先实例化应用程序,然后实例化委托并将委托分配给应用程序

通常,从程序代码中调用的第一个方法是
UIApplicationDelegate
方法
application:willFinishLaunchingWithOptions:
,但您通常从
application:didffinishlaunchingwithoptions:

设置了一些准备工作,这通常不是必需的,尤其是在使用故事板或在项目属性中设置主界面时。根据这些属性或情节提要,一个视图控制器是首先调用的根视图控制器。对于视图控制器,它非常类似。在大多数情况下,您会使用NIB文件或故事板来定义它们的UI项,然后
viewDidLoad
是针对根视图调用的第一个方法

根据您的代码,您可能会添加如下内容:

-(void) viewDidLoad {
  [super viewDidLoad];
  [self createDeck]
  // here you may want to access some UIView objects in order to display your deck.
}

我不知道你是否理解C++编译,Objto-C是一样的。 首先
预处理器
翻译所有预处理代码(#导入、#宏等),然后将每个.m文件视为一个
编译单元
,它们在
对象文件
中单独编译,无需特定顺序

然后链接器将所有对象文件链接在一起


如果您不了解什么是
编译单元
对象文件
,我建议您对预处理器、编译器、链接器的工作原理做更多的研究,因为这是一个太宽泛的主题,无法在此解释。

如果您知道编译器的工作原理,您认为您可以解决什么特定问题,或者这只是出于好奇吗?不,这只是傻瓜的问题。我对编译器的具体工作不感兴趣。只想知道程序代码的起点以及它是如何工作的(编译器首先看的地方在哪里,如何继续等等)。对于这样做的人来说,这是一个简单的问题。通常
main.m
会“启动”一个
UIApplication
的实例,然后初始化
UIWindow
(检查属性
keyWindow
)的一个实例,该窗口通常使用
UIViewController
来显示
UIView
的实例。事件通过响应者链进行处理。看看,它回答了你的大部分问题,尽管你提到编译器的方式我不清楚。
-(void) viewDidLoad {
  [super viewDidLoad];
  [self createDeck]
  // here you may want to access some UIView objects in order to display your deck.
}