一、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;
}