2-Objective-C 编程
最后更新于:2022-04-01 00:16:57
编译运行Objective-C程序有两种主要方式:
1、Xcode集成开发环境。
2、使用GNU Objective-C编译器的Terminal命令行窗口。
使用Xcode
XCODE和iOS SDK下载地址:
[developer.apple.com](http://blog.csdn.net/haomengzhu/article/details/developer.apple.com)
当然也可以从App Store里面下载。
当然,你需要创建一个开发者账号,不过暂时是不需要的。
Objective-C源文件使用.m结尾,.m也就是扩展名。
Objective-C++是C++的扩展,类似于Objective-C是C的扩展。
A、使用Xcode创建新程序的操作步骤:
1、启动Xcode应用程序。
2、如果开发新项目,选择File->New->New Project...,或者在起始页选择Create a New Xcode Project。
3、选择应用程序类型,选择Application->Command Line Tool(刚开始学习,就不搞什么图形界面了先。这个和C语言差不多),然后Next。
4、为应用程序取一个名称,并且将Type设置为Foundation,确定Use Automatic Reference Counting复选框已经选中(这个是为了使用新的特性,即ARC),单击Next。
5、选择项目目录的名称,还可以选择在哪个目录中存储项目文件,然后点击Create。
6、在左上窗格中会看到文件main.m(在与项目名同名的文件夹下可以找到),突出显示该文件(就是单击那个文件)。在该窗口下面的编辑窗口中输入或编辑你的程序。
7、在工具栏中,选择位于View下方中间的图标,将显示调试区域,在这个区域会将显示输出结果。l
8、在工具栏中点击Run按钮,或者从Product菜单中选择Run,编译并运行程序。
如图示:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-31_5684a3efb06b8.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-31_5684a3efd4441.jpg)
B、使用Terminal命令行写程序的操作步骤:
1、打开Terminal。
2、选择你的工作(工程)目录。如果没有:
~~~
$mkdir test
~~~
进入工作目录
~~~
$cd test
~~~
新建并编辑,
~~~
$vi main.m
~~~
VI的使用,请参考以下链接:
[http://en.wikipedia.org/wiki/Vi](http://en.wikipedia.org/wiki/Vi)
输入你的第一个Program:
~~~
// My first Program
#import
int main(int argc, charchar *argv[]){
@autoreleasepool{
NSLog(@"Hello World!");
}
return 0;
}
~~~
3、编译,编译链接器使用clang的LLVM Clang Objective-C。这个和Linux下的GCC使用差不多。大家不会的话,可以看看GCC那套编译。
$clang -fobjc-arc -framework Foundation main.m -o test
4、运行,这个和Linux是一样的编译的可执行文件前面加上“./”。也可以把工程目录加到PATH中(这样就可以不要"./"),一般没必要。
$./test
5、输出结果就会显示在命令行中。
需要注意的一点是:Objective-C是大小写敏感的,也就是说区分大小写,所以写代码的时候注意这点。
详解:
a、注释:使用//或者/* ... */
b、#import:告诉编译器找到并处理名为Foundation.h文件, 这是一个系统文件;
`#import表示将该文件的信息导入到程序中;`
在C和C++中采用 #include指令, 在本例中也可以采用#include,
而#import是#include改进指令, 它可以防止头文件重复包含问题;
c、int main(int argc, const char * argv[]) , 这个方法是程序的入口 。
参数argc-参数数目 , argv-参数值
d、@autoreleasepool自动释放池:它使得应用在创建新对象时,系统能够有效地管理应用所使用的内存;
或者使用下面的方式:
~~~
// First program example
#import
int main (int argc, const charchar * argv[]) {
NSAutoreleasePool * pool =
[[NSAutoreleasePool alloc] init];
// insert code here...
NSLog(@"Hello World!");
[pool drain];
return 0;
}
~~~
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
语句是创建一个自动释放内存池对象, 使用它来维护内存释放和回收,
其中alloc方法是分配内存, init方法是初始化类, 相当于C++或Java的构造方法作用。
[pool drain]语句是用来释放内存池, 它将纳入到这个内存池中管理的对象内存全部释放掉,
关于NSAutoreleasePool问题我们将在内存管理部分详细讨论。
e:NSLog:oc库函数,仅仅显示或记录其参数,还能显示变量,使用%i;
NSLog是Foundation框架提供的Objective-C日志输出函数,
与标准C中的printf函数类似, 并可以格式化输出。
@“Hello, World!”, 常量NSString对象,是代表NSString字符串对象, 它是Objective-C常用的字符串类。
f:retrun 0:程序正常退出;
它表示要终止main的执行, 一般情况下0代表正常结束, 非0代表异常情况,
这是沿用了C语言的习惯。
Objective-C代码的文件扩展名
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-31_5684a3eff1850.jpg)