黑马程序员_iOS开发之OC基本语法

来源:互联网 发布:如何查询mac地址 编辑:程序博客网 时间:2024/06/08 09:49

一、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基本使用

/*

 主头文件:最主要的头文件

 

 #import的用途:

 1.#include一样,拷贝文件的内容到当前位置

 2.可以自动防止文件的内容被重复拷贝

 3.Foundation框架头文件的路径

 1> 右击Xcode.app --> 显示包内容

 2> Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/Foundation.framework

 4.主头文件

 1> 主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件

 2> Foundation框架的主头文件名称就是Foundation.h

 3> 只需要包含Foundation框架主头文件,就可以使用整个框架的东西

 

 5.运行过程

 1> 编写OC源文件:.m.c

 2> 编译:cc -c xxx.m xxx.c

 3> 链接:cc xxx.o xxx.o -framework Foundation

 (只有用到了Foundation框架才需要加上-framework Foundation)

 4> 运行:./a.out

 */


//NSObjCRuntime.h中有NSLog函数的声明

//关于NSLog函数的头文件声明不知,可以直接编译看系统提示

//Foundation是框架,就是把这个框架下的NSObjCRuntime.h文件拷贝进来

//#import <Foundation/NSObjCRuntime.h>

//只需要包含Foundation框架主头文件,就可以使用整个框架的东西

#import <Foundation/Foundation.h>

int main()

{

    // NSLog输出内容会自动换行

    //编译命令 cc -c **.m

    //链接命令 cc **.o,这时链接时报错,提示NSLog函数没有定义,因为链接时只是把C函数库的东西搞进来,OC没用

    //链接改进cc **.o -framework Foundation

    //所以OC程序用到Foundation框架时,链接时要主动告诉编译器要包含的内容

    NSLog(@"第二个OC程序!!!");

    //printf("");此函数在链接时,就会把库函数链接成功 

   return 0;

}

四、多个OC程序执行和C程序互调

1、多个OC程序执行

/*****************************

            one.m

 *****************************/

#import "two.h"

int main()

{

    test();

   return 0;

}

/************************************

                two.m

 ************************************/

#import <Foundation/Foundation.h>

void test()

{

    NSLog(@"调用了test函数");

}

/*******************************

                two.h

 ********************************/

//不用使用条件编译命令,防止重复头文件多次拷贝编译

//#import#include优越点是可自动防止

void test();

********************************************************************
2、OC程序与C程序相互调用

/************************************

                one.m

************************************/

#import"two.h"

int main()

{

    //OC程序中调用C程序是可以的,同样C程序中调用OC程序也可以

    test();

   return 0;

}

/************************************

                two.c

 ************************************/

#include<stdio.h>

void test()

{

    printf("调用了test函数\n");

}

/**********************************

            two.h

 **********************************/

void test();

五、BOOL类型

#import <Foundation/Foundation.h>

/*

 1BOOL类型的本质

    typedef signed char BOOL; //BOOL其实是字符型

 2BOOL类型的变量有2种取值:YESNO

    #define YES (BOOL)1

    #define NO (BOOL)0

 3BOOL的输出(当做整数来用)

    NSLog(@"%d %d", YES, NO);

 */

BOOL test(BOOL mybool)

{

    return NO;

}


int main()

{

   BOOL b = YES;

   BOOL b2 = NO;

   BOOL b3 = 1;// YES

   BOOL b4 = 0;// NO

    

    //NSLog(@"%i", b);

    NSLog(@"%i", test(YES));

   return 0;

}




0 0
原创粉丝点击