【问题标题】:Trying to understand Objective C classes and methods试图理解 Objective C 的类和方法
【发布时间】:2011-12-15 09:09:19
【问题描述】:

我是 iPhone 开发和 Objective C 的新手。我决定先做一些关于 Objective C 的教程来掌握这门语言的窍门,但是有一些事情我不确定,如果有人能解释一下,我将不胜感激他们给我。

我已经从应用商店下载了 Xcode 4.2,所以正在使用。

第一个问题,你可以在目标 C 中只有一个主要课程吗?我现在正在浏览 NewBoston 的教程,他有很多不同的教程,而且我习惯了 Java 编程,我只是为每个教程创建一个新类。然而,在 Objective C 中,当你创建一个新项目时,你会得到一个名为 main.m 的文件,它似乎是始终执行的默认类。我习惯了 java,当你只创建一个项目时,可以在其中包含任意数量的类,并且可以选择要运行的类。你不能在Objective C中做这样的事情吗?还是我必须为我做的每个教程创建一个新项目?因为我不想只更改主类,所以当我完成教程时,我喜欢保留文件,以便我可以回去检查它,如果我忘记了什么。

关于 Objective C 中的 main 方法的第二个快速问题。main 方法是这样声明的

int main(int argc, char *argV[]){

为什么 main 方法是 int 声明?我习惯了 Java,其中主要方法是无效的,因为主要方法不返回任何东西。对我来说,Objective C 的主要方法是 int 似乎很奇怪。很好理解。

提前感谢您的帮助

【问题讨论】:

    标签: iphone objective-c ios xcode4.2


    【解决方案1】:

    1) 在 Objective-C 中,您有一个在启动时运行的 main 函数。结合 iOS 运行时也进行一些初始化并从项目信息(例如启动 Storyboard / NIB)中获取该信息这一事实,每个项目只能有一个入口点。这在某种程度上源于这样一个事实,即虽然 Java 维护了大量的命名空间信息并且本身没有预定义的入口点,但 Objective-C 确实将所有内容编译到一个文件中并寻找一个名为 main 的函数。你可以把它看成一个 jar 文件,它自己设置了一个预定义的入口点;只有你不能更改入口点的名称。

    2) main 的返回类型:长期以来,程序都有返回码来指示成功(返回码 0)或失败(返回码大于零,主要记录在手册页等中)。实际上你在 Java 中也有同样的情况,看看System.exit(int exitcode),Java 只是有一些默认处理,因为在人的情况下不再需要返回代码(尤其是在编写 GUI 应用程序时)。

    【讨论】:

    • 感谢你们俩的回答。猜只是意味着做更多的项目。认为我绝对更喜欢 Java :P
    • @AdamM 如果你了解如何用 obj-c 编写好的程序,那将有助于用 Java 编写更好的程序。
    • 也许,目前,我只是觉得尝试使用它有点令人困惑。语法似乎很难习惯,但只用了两天,只是我需要在部分工作中使用它,所以接下来要学习很多东西。
    【解决方案2】:
    1. 每个项目只能有一个 main.m 和一个 main 方法。
    2. main 返回 int 作为退出状态代码,可由程序的调用者评估。这在 C 和派生语言中很常见。返回0 表示“一切正常”。其他状态代码通常意味着出现问题。

    【讨论】:

      【解决方案3】:

      我同意 TriPhoenix 所写的一切。

      我只有一条小评论。

      在 iOS 上的 main 函数内(它是一个函数而不是一个类方法),你总是调用函数 UIApplicationMain 来启动你的应用程序。

      由于 iOS 上的应用程序永远不会退出,UIApplicationMain 函数永远不会返回,因此您的 main 函数永远不会返回。在 iOS 中,返回值没有意义。它只是为了保持一致性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多