黑马程序员--01.Object-C--第一次亲密接触

------- android培训、java培训、iOS培训 期待与您交流! ----------

  等了好久终于等到今天,今天是我第一次和OC的亲密接触,此刻心情有点小激动噻!^_^。

  我对于java有过一段时间的接触,但是对C语言就没有那么熟悉了。哎,不达标么!所以近期恶补了一下C语言的知识,以便学习OC起来没有那么吃力。

  嘿嘿!进入正题!

  1.什么是OC

   1>.OC就是在C语言的基础上,增加了一层最小的面向对象语言,也就是说java一样,也是面向对象滴!

   2>.OC是完全兼容C语言的,可以在OC里面混入C语言代码和C++代码,OC程序完全兼容c语言程序,后缀名为.m   如果想要兼容C++程序,后缀名为.mm。这就不同于C语言的后缀名.C。

   3>.OC语言是可以使用在iOS平台的应用程序和Mac OS X平台。

介绍完了OC是什么,然后接下来要说说OC的基本语法。

  2.OC语法简介

   1>.OC的关键字基本上都是以@开头的,为什么呢?因为OC本身是兼容C语言的,为了和C语言的关键字区别开来,所以在前面加上@。

    比如我们常见的关键字:在C语言中为:public,private,protected。那么在OC中表示为@public,@private,@protected。

    当然也有一些不是以@开头的,比如:self,super,id,_cmd,_block,_strong,_weak这些不是以@开头的。

   2>.接下来说说,OC的字符串。字符串是以@开头的。比如:@"Hello,world!".在C语言中我们直接用"Hello,world!"

    OC中的屏幕输出使用的是 NSLog();

       比如:

1 #import <Foundation/Foundation.h>
2
3 int main(int argc, const char * argv[]) {
4     @autoreleasepool {
5     //屏幕输出 Hello, World!
6         NSLog(@"Hello, World!");
7     }
8     return 0;
9 }

    在C语言中屏幕输出的话,我们使用printf();同样输出Hello,world!

    如下:

1 #include "stdio.h"
2 int main()
3 {
4     printf("Hello,world!\n");
5     printf("我的第一个OC程序!完全兼容C语言哦!^_^\n");
6     return 0;
7 }

运行结果如下图:

   NSLog();的输出会自动换行,并且在使用NSLog();方法的时候@与""直接不能有空格。必须NSLog(@"xxxxx");

    3>.仔细看上面代码的话我们会发现两个引入文件的方式不同,OC中用#import <Foundation/Foundation.h>,C语言中使用的是#include "stdio.h"。使用NSLog();需要#import <Foundation/Foundation.h>,使用printf();需要#include "stdio.h"。

    那么import到底有什么用途呢?

    (1).它和include一样,是拷贝文件的内容。

    (2).可以自动防止文件内容被重复拷贝。也就是在头文件里面不需要加入预处理指令。如下:

1 #ifndef _STDIO_H
2 #define _STDIO_H
3 #endif

    4>.说完屏幕输出,下来我要说一下OC中的布尔类型。在C语言中我们使用的bool类型,用true/false来表示,0为false,非0位true。 在OC中布尔类型:BOOL 用YES/NO来表示。

    BOOL类型的本质是:

    typedef signed char BOOL;

    #define YES (BOOL) 1

    #define NO (BOOL) 0

    BOOL的输出:NSLog(@"%d,%d",YES,NO); 当作整数来使用。

    示例代码如下:

 1 #import<Foundation/Foundation.h>
 2 int main()
 3 {
 4     BOOL  b = YES;
 5     BOOL  f = NO;
 6     BOOL  t = 1;
 7     BOOL  f1 = 0;
 8     NSLog(@"\nb是%d,f是%d",b,f);
 9     return 0;
10 }

    运行如下:

    5>.OC中注释、循环语句、条件语句和C语言是一致的。

    6>.比较重要的一个,nil,相当于C语言中的NULL,也就是0。这个是和C语言有区别的。

  3.接下来说说OC程序的开发过程。

    OC程序的开发过程和C语言类似,都是经过编译、链接之后生产可执行文件。

    在终端执行,以文件01-第一个oc程序.m为例子:通过cc -c 01-第一个oc程序.m,编译生产01-第一个oc程序.o文件,通过 cc 01-第一个oc程序.o 链接 生成 a.out文件,通过 ./a.out 运行程序。

  代码如下:

1 #include "stdio.h"
2 int main()
3 {
4     printf("Hello,world!\n");
5     printf("我的第一个OC程序!完全兼容C语言哦!^_^\n");
6     return 0;
7 }

    在终端执行,以文件02-第二个oc程序.m为例子:通过cc -c 02-第二个oc程序.m,编译生产02-第二个oc程序.o文件,通过 cc 02-第二个oc程序.o -framework Foundation链接 生成 a.out文件,通过 ./a.out 运行程序。

代码如下:

1 #import <Foundation/Foundation.h>
2 int main()
3 {
4     NSLog(@"这是我的第二个OC程序^_^");
5 }

终端如下图:

  4jie

  5.接下来说说框架Foundation的作用

    Foundation框架是在开发OC,iOS,Mac程序所要必备的框架。里面包含了很多的常用API。

    框架中包含了很多的头文件,如果想使用整个框架的内容,包含它的主头文件就可以。顺便说一下,每个主头文件的名称和框架名称一模一样。例如:#import <Foundation/Foundation.h>。

好了,目前的比较就先写到这里,我觉得学习OC通过和C语言的对比来学习,这样子学习起来会容易一点,所以我就是这么做的。

  今天是美好的一天。o(^_-)O

    

时间: 2024-11-15 22:03:07

黑马程序员--01.Object-C--第一次亲密接触的相关文章

黑马程序员-面向对象-Object类

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一.Object类中的equals(

黑马程序员——面向对象 Object与内部类

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! --- 1.Object:是所有类直接或间接的父类,该类中具备所有对象都具备的功能. 2. 内部类:将以各类定义在另一个类里面,内部的类就叫做内部类. ▲内部类的访问规则: 内部类可以直接访问外部类中的成员,包括私有. 外部类要访问内部类,必须建立内部类的对象. 内部类之所以可以直接访问外部类中的成员,因为内部类中有一个外部类的引用,格式为:外部类名.this. ▲访问格式: 当内部类定义在外部类成员位置上,非私有,

黑马程序员——01.Java编程基础(一) ——常量、变量、运算符

一.Java的基础组成 1.关键字--被赋予特殊含义的单词 ????????????学习Java的过程中去记忆. 2.标识符---就是指名称(类名.对象名.变量名.函数名.对象名等) ? ? ? ?????????1.26?个英文字母的大小写.0~9数字._和$(不允许有空格) ? ? ? ? ????????2.数字不能开头,关键字不能用来命名 ? ? ? ?????????3.类名-首字母大写(XxxYyyZzz);函数名-(xxxYyyZzz);变量名对象名(xxxyyyzzz) (1)和

黑马程序员--Java基础--01基本概念

1.Java的三大技术架构 JAVAEE(Java Platform Enterprise Edition):  开发企业环境下的应用程序,主要针对web程序开发: JAVASE(Java Platform Standard Edition): 完成桌面应用程序的开发,是其他两者的基础 JAVAME(Java Platform Micro Edition): 开发电子消费产品和嵌入式设备,如手机中的程序 我对三大技术构架理解 1.三大技术是指哪三大技术呢? 答:三大技术分别指JAVAEE,JAV

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

黑马程序员_API

------- android培训.java培训.期待与您交流! ---------- ======================API========================================= 看api的步骤: 1.看类的说明.其所属的包以及出现的版本. 2.看其构造函数. 3.看普通的方法.看时注意参数,和返回值类型. Object类 1. private static native void registerNatives (); 见到本地关键字修饰的方法,这个方

黑马程序员——IO篇

------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流 1.IO流用来处理设备之间的数据传输 2.Java对数据的操作是通过流的方式 3.Java用于操作流的对象都在IO包中 4.流按操作数据分为两种:字节流与字符流 . 字符流的数据字节流其实都能处理,因为无论什么在计算机上最后都是以字节存在的,但是其中有一部分数据它是以文本形式存在的,所以为了方便有了字符流,字符流里融合了编码表,而只有文字用到了编码表,所以字符流用来处理文本

黑马程序员——集合篇

------- android培训.java培训.期待与您交流! ---------- 1.集合类 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一 种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 集合类的特点 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象. 2.集合框架的构成及分类 3.

黑马程序员—张老师基础加强7-动态代理

代理: 要为已经存在的多个具有相同接口的目标类的各个方法增加一些系统功能. 例如:异常处理,日志和计算方法的运行时间,事物管理等,怎么做 如 在运行前后增加计算时间的方法.show(){ sop(); } 编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码. 动态代理: 要为系统中的各种接口的类增加代理功能,那需要太多代理类. jvm可以在运行期间动态生成出类的字节码,这种动态生成的类往往被调用作代理类, 即动态代理类. jvm生成动态类

黑马程序员_Java集合框架

- - - - - android培训.java培训.期待与您交流! - - - - - - 集合框架:用于存储数据的容器. 特点: 对象封装数据,对象多了也需要存储.集合用于存储对象. 对象的个数确定可以使用数组.如果不确定可以用集合.因为集合是可变长度的. 集合和数组的区别: 数组是固定长度的:集合可变长度的. 数组可以存储基本数据类型,也可以存储引用数据类型:集合只能存储引用数据类型. 数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同数据类型. 数据结构:就是容器中存储数据的方