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