一。Oc语法预览:
1.关键字:绝大部分以@开头,部分不是:
self、super、id、_cmd、__block、__strong、__weak、
2.字符串以@开头:@"hello"是OC中的字符串
3.其他:
---基本数据类型:char,int,float,double,BOOL(YES/NO)
---nil相当于NULL 也就是0
---输出函数:NSLog(@"Hello"); NSLog(@"age is %i",27);
二。开发过程:
.m原文件----编译--->.o目标文件----链接---->a.out可执行文件
链接:把项目中所有相关联的.o目标文件跟c语言函数库合并在一起,生成一个可执行文件
三。第一个oc程序:
通过终端:
>cd Desktop/ >cd (存放项目的目录文件夹) >touch firstoc.m >open firstoc.m ///默认通过xcode打开 #include <stdio.h> int main(){ -----printf("这是第一个oc程序"); -----return 0; } >cc -c firstoc.m //编译,生成.o文件 >cc firstoc.o //链接,生成a.out文件 >./a.out //执行程序
四。第二个oc程序:
/* import 用途,预处理指令 1.跟#include一样,拷贝文件的内容 2.可以自动防止文件的内容被重复拷贝 */ //NSobjCRuntime.h中有NSLog函数的声明 3.Foundation框架头文件的路径: 点击Xcode.app-->显示内容: Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Develop/SDKs/iPhoneOS6.0sdk/System/Library/Frameworks/Foundation.framwork 4.每一个框架都有一个主头文件:主头文件名和框架名一摸一样,其包含了框架的所有头文件,所以只要写主头文件就行了 5.运行 >编写OC源文件:.m .c >编译:cc -c xxx.m xxx.c >链接: cc xxx.o xxx.o -framework Foundation ( 只有包含Foundation框架主头文件,就可以使用整个框架的东西) 也可以直接cc.m cc.c 合并编译和链接 //#import <Foundation/NSobjCRuntime.h> #import<Foundation/Foundation.h> int main(){ -----NSLog(@"第二个oc程序"); -----return 0; }
终端输入: >cc -c twooc.m//编译生成.o文件 >cc twooc.o -framework Foundation//需要引入oc框架 >./a.out//执行
最核心的框架:UIKit.framework
最强大的动画框架:QuartzCore.framework
每一个框架都有一个主头文件:都和框架名一摸一样
四。第三个oc程序:one.m调用two.m中的方法
two.h; void test(); one.m: #import "two.h" //内部的文件用双引号 int main(){ test(); return 0; } two.m: #import <Foundation/Foundation.h> void test(){ NSLog(@"调用了test函数“); }
此时如果单独链接one.o或者two.o就会报错
既然one中包含two中要用的函数,那就办这两个o文件合并在一起链接
>cc one.o two.o -framework Foundation >ls -l a.out >./a.out
五。第四个oc程序:
c语言程序和oc程序可以相互调用
two.h: void test(); one.m: #import "two.h" int main(){ test(); return 0; } two.c: #include<stdio.h> void test(){ printf("调用了test函数\n"); }
六。BOOL:
本质是 typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
NSLog(@"%d,%d",YES,NO);