------- android培训、java培训、iOS培训 期待与您交流! ----------
等了好久终于等到今天,今天是我第一次和OC的亲密接触,此刻心情有点小激动噻!^_^。
我对于java有过一段时间的接触,但是对C语言就没有那么熟悉了。哎,不达标么!所以近期恶补了一下C语言的知识,以便学习OC起来没有那么吃力。
嘿嘿!进入正题!
1.什么是OC
1>.OC就是在C语言的基础上,增加了一层最小的面向对象语言,也就是说java一样,也是面向对象滴!
2>.OC是完全兼容C语言的,可以在OC里面混入C语言代码和C++代码,OC程序完全兼容c语言程序,后缀名为.m 如果想要兼容C++程序,后缀名为.mm。这就不同于C语言的后缀名.C。
3>.OC语言是可以使用在iOS平台的应用程序和Mac OS X平台。
介绍完了OC是什么,然后接下来要说说OC的基本语法。
2.OC语法简介
1>.OC的关键字基本上都是以@开头的,为什么呢?因为OC本身是兼容C语言的,为了和C语言的关键字区别开来,所以在前面加上@。
比如我们常见的关键字:在C语言中为:public,private,protected。那么在OC中表示为@public,@private,@protected。
当然也有一些不是以@开头的,比如:self,super,id,_cmd,_block,_strong,_weak这些不是以@开头的。
2>.接下来说说,OC的字符串。字符串是以@开头的。比如:@"Hello,world!".在C语言中我们直接用"Hello,world!"
OC中的屏幕输出使用的是 NSLog();
比如:
1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 //屏幕输出 Hello, World! 6 NSLog(@"Hello, World!"); 7 } 8 return 0; 9 }
在C语言中屏幕输出的话,我们使用printf();同样输出Hello,world!
如下:
1 #include "stdio.h" 2 int main() 3 { 4 printf("Hello,world!\n"); 5 printf("我的第一个OC程序!完全兼容C语言哦!^_^\n"); 6 return 0; 7 }
运行结果如下图:
NSLog();的输出会自动换行,并且在使用NSLog();方法的时候@与""直接不能有空格。必须NSLog(@"xxxxx");
3>.仔细看上面代码的话我们会发现两个引入文件的方式不同,OC中用#import <Foundation/Foundation.h>,C语言中使用的是#include "stdio.h"。使用NSLog();需要#import <Foundation/Foundation.h>,使用printf();需要#include "stdio.h"。
那么import到底有什么用途呢?
(1).它和include一样,是拷贝文件的内容。
(2).可以自动防止文件内容被重复拷贝。也就是在头文件里面不需要加入预处理指令。如下:
1 #ifndef _STDIO_H 2 #define _STDIO_H 3 #endif
4>.说完屏幕输出,下来我要说一下OC中的布尔类型。在C语言中我们使用的bool类型,用true/false来表示,0为false,非0位true。 在OC中布尔类型:BOOL 用YES/NO来表示。
BOOL类型的本质是:
typedef signed char BOOL;
#define YES (BOOL) 1
#define NO (BOOL) 0
BOOL的输出:NSLog(@"%d,%d",YES,NO); 当作整数来使用。
示例代码如下:
1 #import<Foundation/Foundation.h> 2 int main() 3 { 4 BOOL b = YES; 5 BOOL f = NO; 6 BOOL t = 1; 7 BOOL f1 = 0; 8 NSLog(@"\nb是%d,f是%d",b,f); 9 return 0; 10 }
运行如下:
5>.OC中注释、循环语句、条件语句和C语言是一致的。
6>.比较重要的一个,nil,相当于C语言中的NULL,也就是0。这个是和C语言有区别的。
3.接下来说说OC程序的开发过程。
OC程序的开发过程和C语言类似,都是经过编译、链接之后生产可执行文件。
在终端执行,以文件01-第一个oc程序.m为例子:通过cc -c 01-第一个oc程序.m,编译生产01-第一个oc程序.o文件,通过 cc 01-第一个oc程序.o 链接 生成 a.out文件,通过 ./a.out 运行程序。
代码如下:
1 #include "stdio.h" 2 int main() 3 { 4 printf("Hello,world!\n"); 5 printf("我的第一个OC程序!完全兼容C语言哦!^_^\n"); 6 return 0; 7 }
在终端执行,以文件02-第二个oc程序.m为例子:通过cc -c 02-第二个oc程序.m,编译生产02-第二个oc程序.o文件,通过 cc 02-第二个oc程序.o -framework Foundation链接 生成 a.out文件,通过 ./a.out 运行程序。
代码如下:
1 #import <Foundation/Foundation.h> 2 int main() 3 { 4 NSLog(@"这是我的第二个OC程序^_^"); 5 }
终端如下图:
4jie
5.接下来说说框架Foundation的作用
Foundation框架是在开发OC,iOS,Mac程序所要必备的框架。里面包含了很多的常用API。
框架中包含了很多的头文件,如果想使用整个框架的内容,包含它的主头文件就可以。顺便说一下,每个主头文件的名称和框架名称一模一样。例如:#import <Foundation/Foundation.h>。
好了,目前的比较就先写到这里,我觉得学习OC通过和C语言的对比来学习,这样子学习起来会容易一点,所以我就是这么做的。
今天是美好的一天。o(^_-)O