还记得第一次学习C语言的时候的第一个工程吗?C++呢?JAVA呢?是不是感觉没有接触过“HelloWorld”的人就没接触过编程。纯属本人愚见。
今天我写下在Mac系统的Xcode编译的第一个工程“HelloWorld”。欢迎各位指正。
1.打开Xcode,创建HelloWoeld工程。
点击那个大些字母A上面有把锤子的绿色图标,进入如下界面。
选择红色方框部分:Create a new Xcode project。之后进入如下界面。
选择OS X 下的 Applicaton 里面的 Cocoa Application后点击Next按钮。
给工程取名。
存储工程,由于之前我已经建立了这么一个工程,这里不再进一步演示。至此工程HelloWorld也建立完毕。
2.打开主界面,编译代码。
主界面如此,双击红色方框部分,弹出代码编辑框。
系统已经默认的为我们编写好了HelloWorld的代码。
我们点击左上角的这个按钮,编译代码,编译结果如下:
那么到此新建第一个HelloWorld工程完毕了。但是这里由于Objective-C是一门新的语言,我们需要知道这里的代码和以前学习的C代码有什么差异呢?
//
// main.m
// HelloWorld
//
// Created by zhum on 15/6/16.
// Copyright (c) 2015年 zhum. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}
为什么头文件是用 #import <Foundation/Foundation.h>?
为什么打印是用 NSLog(@"Hello, World!");?
现在我么你就来解决这两个疑问。
a.和C语言一样,Objective-C使用头文件来包含元素声明,这些元素包括结构体、符号常量、函数原型等。C语言使用#include语句通知编译器应在头文件中查询定义。在Object-C程序中也可以使用#include来实现这个目的。但你可能永远不会那么做,而像下面这样使用#import:
#import <Foundation/Foundation.h>
#import是GCC编译器提供的,Xcode在编译Objective-C、C和C++程序时都是使用它。
#import可保证头文件只被包含一次,而不论次命令实际上在那个文件中出现了多少次。
#import <Foundation/Foundation.h>语句告诉编译器查看Foundation架构中的Foundation.h头文件。
b.在Objective-C中,NSLog相当于C语言中的printf,常用于文字输出。但我建议使用NSlog(),因为他添加了特性,例如时间戳、日期戳和自动附加换行符('\n')等
在Cocoa对其所有 函数、常量和类型都添加了“NS”前缀。这些前缀告诉你函数来自Cocoa而不是其他工具包。
NSLog可以如下面的方法使用:
NSLog (@"this is a test");
NSLog (@"string is :%@", string);
NSLog (@"x=%d, y=%d", 10, 20);
NSLog的格式如下所示:
%@ | 对象 |
%d, %i | 整数 |
%u,%z | 无符整形 |
%f | 浮点/双字 |
%x, %X | 十六进制整数 |
%o | 八进制整数 |
%zu | size_t |
%p | |
%e | 浮点/双字 (科学计算) |
%g | 浮点/双字 |
%s | C 字符串 |
%.*s | Pascal字符串 |
%c | 字符 |
%C | unichar |
%lld | 64位长整数(long long) |
%llu | 无符64位长整数 |
%Lf | 64位双字 |
%hhd | BOOL布尔类型 |