学习OC的语法建议还是用普通的编辑器写OC代码,然后在终端命令行下编译与运行。那我们来看一下是如何在命令行下编译一个OC源文件,以及运行编译后的可执行文件的
开发环境
操作系统:macOS Big Sur
终端:iTerm2 Build 3.4.8
clong: Apple clang version 13.0.0 (clang-1300.0.29.3)
编辑器:Atom : 1.60.0
操作示例
cc与clang
他们是同一个命令,cc只是能少输入几个字符而于
编译链接
在当前目标下创建一个Hello.mm文件,并用atom打开该文件
pwd
/Users/luogw/temp/test
touch Hello.m
Hello.m的内容如下
#import <Foundation/Foundation.h>
int main(int argc, char * argv[]) {
NSString * str = @"Hello, OC";
NSLog(@"%@", str);
return 0;
}
编译加链接,生成可执行文件
cc Hello.m -framework Foundation
// framework 是指定链接库,我们使用了NSLog还有NSString,它们是Foundation库中定义的
默认生成的可执行文件是a.out
仅仅编译
cc -c oc代码文件
加-c即只编译源代码文件,输出中间态的目标文件,如下所示
自定义类
使用自定义类的示例
#import <Foundation/Foundation.h>
//声明类
@interface Person : NSObject
{
}
@property(nonatomic, retain) NSString * name;
@property int age;
- (void) printInfo;
@end
//定义类
@implementation Person {
}
- (void) printInfo {
NSLog(@"My name is %@, %d years old", _name, _age);
}
@end
int main(int argc, char * argv[]) {
NSString * str = @"Hello, OC";
NSLog(@"%@", str);
Person *p = [[Person alloc]init];
p.name = @"Eric";
p.age = 36;
[p printInfo];
return 0;
}
编译运行结果如下
man cc
man cc
//查看clang的具体说明/帮忙文档