如何在没有类的Objective-C中编写方法?

时间:2014-07-29 06:41:47

标签: objective-c

你好我有一些C ++和java的经验,我是Objc的新手,这个问题可能非常愚蠢。我正在通过一本书学习Objective-C。到目前为止,它所教授的是编写类的方法。我想知道如何编写一个属于main.m中没有类的方法。  就像一个简单的int max(a, b) Objective-C版本,可以通过main函数中的代码调用。

4 个答案:

答案 0 :(得分:2)

你不能在课外写Objective C方法。但你可以使用C函数。

所以你可以写下以下内容:

int max(int a, int b)
{
    return a > b ? a : b;
}

main中,您可以通过以下方式使用此功能:

int max = max(5, 10);

答案 1 :(得分:2)

以下是您需要了解的内容:

  • 所有标准C在.m文件中有效。所有标准C ++在.mm文件中都有效。 (.mm文件包含“Objective-C ++”代码。)

  • 不需要.m文件来包含类实现。它可以只包含函数定义,如果这是你想要的。

所以,如果你想要的话,你可以将你的功能放在main.m中:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int myMax(int a, int b)
{
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

但您可能希望将其放在单独的.m文件中,并带有.h文件。创建这些文件的最简单方法是选择File&gt;新&gt;文件然后选择“Objective-C类”模板。 (在Xcode 6中,模板被称为“Cocoa Touch Class”或“Cocoa Class”,具体取决于您的目标平台。)对于类名,只需告诉它您希望.m和{{1}的基本文件名}} 具有。 (示例:输入.h作为类。)使其成为myMax的子类。

然后,编辑NSObject文件,删除.h以及所有后续行,并声明您的功能:

@interface myMax

// // myMax.h // polygon // // Created by Rob Mayoff on 7/29/14. // Copyright (c) 2014 Rob Mayoff. All rights reserved. // #import <Foundation/Foundation.h> extern int myMax(int a, int b); 文件中,删除.m以及所有后续行,并定义您的功能:

@implementation myMax

要使用// // myMax.m // polygon // // Created by Rob Mayoff on 7/29/14. // Copyright (c) 2014 Rob Mayoff. All rights reserved. // #import "myMax.h" int myMax(int a, int b) { if (a > b) { return a; } else { return b; } } 中的功能,首先需要main.m头文件。然后,您只需使用通常的C / C ++语法调用该函数:

#import

请注意,由于您的函数是在#import <UIKit/UIKit.h> #import "AppDelegate.h" #import "myMax.h" int main(int argc, char * argv[]) { @autoreleasepool { NSLog(@"myMax = %d", myMax(50, 60)); return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 文件中定义的,因此它可以在函数体内使用Objective-C语法。例如:

.m

答案 2 :(得分:0)

写下来吧。 C代码可以在Objective-C中使用。如果你想编写C ++代码,你也可以编写它,但是在Objective-C ++(扩展名为.mm的文件)中。

答案 3 :(得分:-1)

把它放在主要功能之外。

-(float)add:(float)num1 and:(float)num2
{
    return num1 + num2;
}

然后在主函数中调用它:

[self add:3.5 and:4.3];