一。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);