还记得第一次学习C语言的时候的第一个工程吗?C++呢?JAVA呢?是不是感觉没有接触过“HelloWorld”的人就没接触过编程。纯属本人愚见。

今天我写下在Mac系统的Xcode编译的第一个工程“HelloWorld”。欢迎各位指正。

1.打开Xcode,创建HelloWoeld工程。

xcode15创建并运行iOS项目 xcode如何创建工程_Mac

点击那个大些字母A上面有把锤子的绿色图标,进入如下界面。

xcode15创建并运行iOS项目 xcode如何创建工程_Xcode_02

选择红色方框部分:Create a new Xcode project。之后进入如下界面。

xcode15创建并运行iOS项目 xcode如何创建工程_Xcode_03

选择OS X 下的 Applicaton 里面的 Cocoa Application后点击Next按钮。

xcode15创建并运行iOS项目 xcode如何创建工程_Xcode_04

给工程取名。

xcode15创建并运行iOS项目 xcode如何创建工程_Xcode_05

存储工程,由于之前我已经建立了这么一个工程,这里不再进一步演示。至此工程HelloWorld也建立完毕。

2.打开主界面,编译代码。

xcode15创建并运行iOS项目 xcode如何创建工程_Xcode_06

主界面如此,双击红色方框部分,弹出代码编辑框。

xcode15创建并运行iOS项目 xcode如何创建工程_Mac_07

系统已经默认的为我们编写好了HelloWorld的代码。

xcode15创建并运行iOS项目 xcode如何创建工程_Xcode_08

我们点击左上角的这个按钮,编译代码,编译结果如下:

xcode15创建并运行iOS项目 xcode如何创建工程_Objective-C_09

那么到此新建第一个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布尔类型