IOS / xcode:默认情况下执行哪些方法

时间:2015-02-03 16:01:33

标签: ios xcode methods

我是IOS newb,具有PHP等程序脚本语言的背景知识。在尝试学习Xcode几个月后,我意识到我仍然不了解一些非常基本的东西,即什么方法被调用。

我可以理解在IBActions中响应用户操作而调用的方法。但是,调用其他方法的过程仍然很神秘。我收集了视图控制器的子类,有一个生命周期与ViewDidLoad等,这些方法都被自动调用。似乎app委托中有一些方法可以自动调用。但是,除此之外,可以肯定地说,除非由事件触发或从生命周期方法调用,否则我放入NSObject或视图控制器的任何方法都将被调用?

似乎不可能像在函数和方法之外的过程文件中那样将代码放入文件中,并且知道它将被执行。相反,你必须把它放在一个方法中。但是你如何得到这种方法?

所有代码最终都必须链接回生命周期方法或事件触发的方法吗?

如果您在NSobject中怎么办?如何确保代码被触发 - 或者您是否必须在生命周期方法中将NSobject方法包含在NSviewcontroller中?

感谢您解释这一基本概念。

2 个答案:

答案 0 :(得分:3)

很高兴知道有些人来自其他环境,现在正在研究iOS开发。首先,请注意您的所有问题都与面向对象编程的基本概念相关,因此,如果您要去,例如进入Java领域,你会遇到完全相同的问题。

让我提一些事情:

  1. 您指出您注意到某些方法会自动调用,例如applicationDidFinishLaunching中的AppDelegateviewDidLoad中的UIViewController。这确实是正确的,但是这些情况是由您的开发环境和您使用的框架给出和决定的。所以,实际上在iOS上,应用程序的基本构建块是UIViewControllers,这些是Apple自己提供的,供我们的iOS开发人员在他们的环境中工作。 Apple决定并提供建议,以便我们如何与这些合作。如果您要使用Android,则不会特别处理UIViewControllers,但平台也会为您提供指导应用程序开发的基本构建块。

  2. 如果您想体验原始面向对象编程,您可以随时开始编写一些Objective-C类并在终端中编译并运行它们(您很可能)将无法构建这样的iOS应用程序,但您将能够解决计算问题并构建应用程序。

  3. 您提到的另一点涉及如果您只是NSObject并希望代码执行该怎么办。好吧,在这种情况下它很特别,因为NSObject本身实际上只是你想要在iOS上使用的所有其他类的基类。它实现了基类操作(比如放入NSArray),一旦你继承它就需要它。你几乎不想直接使用NSObject,但总是使用它的子类。

  4. 我不能在这个答案中进一步研究面向对象的编程,这超出了我认为的Stackoverflow的范围。只要知道你需要研究的是面向对象编程的基础知识。一旦你熟悉了这些,Xcode和iOS中的所有内容都将开始变得更有意义!

    有很多材料可以教授这些原则,我建议你Stanford lectures on iOS 8 development这些原则被大大覆盖!

    祝你好运! :)

答案 1 :(得分:1)

Cocoa是支持OS X和iOS开发的一组框架,它是事件驱动的。这意味着,一般来说,代码是作为某些事件的结果执行的 - 用户触摸,定时器触发,动画完成,接收网络请求等。从程序员的角度来看,代码不会以明显的顺序执行,而是回应发生的事情。

通过覆盖UIViewController和朋友等方法,您可以提及viewDidLoad生命周期挂钩作为一种运行某些代码的方法。请注意,这些方法是由某些事件调用的 - 它在名称中!在视图加载后,viewDidLoad会让您有机会自定义。

稍后,根据您的需要,您会发现有无穷无尽的复杂方法可以运行代码 - 您可以将块提交到Grand Central Dispatch (GCD)队列,然后启动NSOperation以获取更多信息复杂,相互依赖的任务,使用NSTimer安排未来事件等等。但是,再次,由于系统的事件驱动性质,理论上可以将所有这些代码的执行追溯到某个事件。