一、OC简介
1、C++语法比Java语法多,Java语法比OC语法多,OC是在C语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言(C文件拓展名是.c,OC文件的拓展名是.m,既可以编写OC代码,也兼容C代码,如果想要兼容C++代码,拓展名要改为.mm)
2、完全兼容C语言
3、可以在OC代码中混入C语言代码,甚至是C++代码
4、可以使用OC开发Mac OS X平台和iOS平台的应用程序
5、OC和C++都是在C语言基础上发展起来的,Java严格意义上讲也是在C语言基础上延伸来的,更准确来说是在C++基础上,去掉了C++一些复杂语法,再加入一些自己的语法。
二、OC语法
1、每一种编程语言都有关键字,OC避免与C语言关键字混淆,基本上所有关键字都是以@开头的
2、OC中数据类型拓展,OC中的nil就相当于C语言中的NULL,也就是0
3、框架framework
几个重要的框架:UIKit.framework非常重要
QuartzCore.framework 封装动画(强大),跨平台iOS和Mac
CoreGraphics.framework画图用的
CoreMedia.framework做多媒体用的
CoreLocation.framework做用户定位用的
现阶段学OC,只会用到Foundation.framework,这是基础,为之后学习其他框架打下基础,每个框架下有很多头文件,如果想加载所有头文件,只需加载这个框架的主头文件就行啦,主头文件名和框架名一样,比如这个Foundation框架的主头文件名是Foundation.h
三、OC基本使用
/*
主头文件:最主要的头文件
的用途:
1.跟#include一样,拷贝文件的内容到当前位置
2.可以自动防止文件的内容被重复拷贝
框架头文件的路径
右击Xcode.app --> 显示包内容
2> Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/Foundation.framework
4.主头文件
1> 主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件
框架的主头文件名称就是Foundation.h
3> 只需要包含Foundation框架主头文件,就可以使用整个框架的东西
5.运行过程
编写OC源文件:.m、.c
编译:cc -c xxx.m xxx.c
链接:cc xxx.o xxx.o -framework Foundation
只有用到了Foundation框架才需要加上-framework Foundation)
运行:./a.out
*/
中有NSLog函数的声明
//关于NSLog函数的头文件声明不知,可以直接编译看系统提示
是框架,就是把这个框架下的NSObjCRuntime.h文件拷贝进来
//#import <Foundation/NSObjCRuntime.h>
//只需要包含Foundation框架主头文件,就可以使用整个框架的东西
#import <Foundation/Foundation.h>
int
{
// NSLog输出内容会自动换行
//编译命令
//链接命令 cc **.o,这时链接时报错,提示NSLog函数没有定义,因为链接时只是把C函数库的东西搞进来,OC没用
//链接改进cc **.o -framework Foundation
//所以OC程序用到Foundation框架时,链接时要主动告诉编译器要包含的内容
NSLog(@"第二个OC程序!!!");
//printf("");此函数在链接时,就会把库函数链接成功
return 0;
}
四、多个OC程序执行和C程序互调
1、多个OC程序执行
/*****************************
one.m
*****************************/
"two.h"
int
{
test();
return 0;
}
/************************************
two.m
************************************/
#import <Foundation/Foundation.h>
void
{
@"调用了test函数");
}
/*******************************
two.h
********************************/
//不用使用条件编译命令,防止重复头文件多次拷贝编译
比#include优越点是可自动防止
void
2、OC程序与C程序相互调用
/************************************
one.m
************************************/
"two.h"
int
{
//OC程序中调用C程序是可以的,同样C程序中调用OC程序也可以
test();
return 0;
}
/************************************
two.c
************************************/
#include<stdio.h>
void
{
"调用了test函数\n");
}
/**********************************
two.h
**********************************/
void
五、BOOL类型
#import <Foundation/Foundation.h>
/*
、BOOL类型的本质
其实是字符型
、BOOL类型的变量有2种取值:YES、NO
#define YES (BOOL)1
#define NO (BOOL)0
3、BOOL的输出(当做整数来用)
NSLog(@"%d %d", YES, NO);
*/
BOOL test(BOOL
{
return NO;
}
int
{
BOOL b = YES;
BOOL b2 = NO;
BOOL b3 = 1; // YES
BOOL b4 = 0; // NO
//NSLog(@"%i", b);
@"%i", test(YES));
return 0;
}