1.什么是OC?

Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的。OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言。OC是Mac OS X系统和iOS系统的主要开发编程语言。C程序的源文件的后缀名为.c,OC程序的源文件是后缀名为.m,m就是message的意思。因为OC是完全兼容C语言的,所以在.m文件之中是可以写任意的C代码。并且OC中main函数仍然是OC程序的入口,作用和C语言中的是一样的。

(1).#import指令

用法和#include指令的用法相同。并且#import在包含文件的时候会先判断这个文件是否已经被包含,如果没有被包含就包含,如果已经被包含,就不再包含。C语言中#include一样,用来拷贝某个文件的内容,#import可以自动防止文件内容被拷贝多次,也就意味着头文件中不用加入相应的预处理指令。

(2).Foundation框架

苹果或开源第三方把一些功能模块封装在一个一个类中,给大家使用。这些类的集合就是框架。相当于一个工具箱。

在编写第一个OC程序时用到了OC的输出函数NSLog,但调用NSLog需要包含Foundation框架,OC中一般使用#import <Foundation/Foundation.h>来包含Foundation框架,每个框架都有自己的主头文件:即最主要的头文件。主头文件名字一般跟框架名称一样,包含了框架中的所有其他头文件,Foundation框架的主头文件名称就是Foundation.h,只需要包含Foundation框架的主头文件,就可以使用整个框架的东西。

#import <Foundation/Foundation.h>
//OC程序的入口:main函数
int main()
{
  //printf("第一个OC程序\n");//OC完全兼容C语言程序   
  NSLog(@"第一个OC程序"); //NSLog输出内容会自动换行
 
  return 0;
}

(3).NSLog与printf的区别

NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数

NSLog输出后会自动换行,printf输出后不会自动换行

使用NSLog需要#import <Foundation/Foundation.h>

使用printf需要#include <stdio.h>

NSLog输出完毕信息之后会默认加一个\n,如果我们手动加了一个\n,NSLog的自动换行就会失效。

在输出信息的同时还会输出一些与程序有关的其他信息(系统时间、程序名、进程ID、线程ID)。

NSLog函数的字符串参数前面必须要加一个@符号,这是OC里的字符串格式。

NSLog可以使用%@格式控制符输出对象,而printf不能输出对象。

NSLog函数的第一个参数是NSString类型的指针,所以必须给一个OC字符串。

(4).OC中的字符串

C语言使用字符数组和字符指针的方式来存储字符串,OC中专门设计了一个新的数据类型(NSString)来保存字符串。OC中的字符串常量必须加一个@前缀,写在双引号外面,如:@"Nstring"。OC的字符串常量使用NSString类型的指针变量来保存地址.NSString *str = @"Nstring".

(5).BOOL的使用

BOOL类型的本质 typedef signed char BOOL;

BOOL类型的变量有2种取值:YES、NO

#define YES (BOOL)1

#define NO (BOOL)0

BOOL的输出(当做整数来用)

NSLog(@"%d %d", YES, NO);

(6).OC的编译

    OC程序编译的是.m,.mm文件,.o是目标文件;链接生成.out文件。