【问题标题】:Simple Objective-C question : why is main a method and not a function?简单的 Objective-C 问题:为什么 main 是方法而不是函数?
【发布时间】:2010-11-09 19:51:58
【问题描述】:

我正在为一些朋友编写一个简单的 Objective-C 教程,但遇到了一个我无法回答的非常简单的问题。在 Foundation Tool 项目中,为什么 main 是一个方法?至少在我读过的所有书籍中,它都被称为“main-method”。

让我告诉你细节......我做了一个小程序,其中 NSMutableArray 用函数排序。我把函数放在 main 之前,一切正常。 我的问题是如何向初学者解释为什么 main 是一个方法,而对数组进行排序的代码是一个函数。很难看出有什么区别。

我们都知道方法总是属于类,而函数不属于,但在我的项目中,我没有类,只有 main.m。像我这样的 C++ 人,我希望 mainstatic 但事实并非如此。

所以问题是“为什么 main 是方法而不是函数?”或者不是吗?还是完全不同的东西?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    啊....好吧,我相信你是在混合 C 和 Objective-C 语法。

    如果在 main.m 中你有以下内容:

      void sortArray(NSMutableArray *a)
       {
    
       }
    
       int main( const int argc, char** argv )
       {
    
       }
    

    那么我认为正确的术语是它们都是 C 风格的函数调用。它们以 C 方式持续存在,而不是以 C++、C# 或 Java 等面向对象的方式存在。我认为你甚至可以制作 C extern 变量和函数。

    但是

    如果你打电话

    [array addObject:insert];
    

    您正在调用一个 Objective-C 方法(从技术上讲,invoking a message)。定义如下。

    @interface myClass : NSObject
    {
        int myIvar;
    }
    
    + (id) myStaticMethod: (NSObject *)parameter;
    - (void) myInstanceMethod: (NSObject *)parameter;
    
    @end
    
    @implementation
    
    + (id) myStaticMethod: (NSObject *)parameter
    {
    
    }
    
    - (void) myInstanceMethod: (NSObject *)parameter
    {
    
    }
    
    @end
    

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      Objective-C 中的main 与 C 或 C++ 中的 main 完全相同。一个独立的函数,它是程序的入口点。有些书可能将其称为主要方法,因为它们的术语有点松散。

      从技术上讲,Objective-C 有方法,这些方法被调用以响应发送到对象的消息。 C++有成员函数,可以直接调用。

      【讨论】:

        【解决方案3】:

        Function 和 Method 没有区别,都是一样的。有些语言有一些术语。在C中,它被称为函数,在C++中,它被称为成员函数,在java中,objective-c中,它被称为方法。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 2011-09-24
        • 2013-09-01
        • 2013-06-24
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        相关资源
        最近更新 更多