虚拟机里的mac系统出了点问题,昨天本想装个双系统算了,但想想如果把现在的系统搞坏了真是不敢想象是什么后果,虽然有备份,还是算了吧,虚拟机里的mac就凑合着用吧。一下对这次学习做个总结同时复习一下。
关键字:Objective-C(以下简称O-C)是C语言的一个超集,也就是C语言的语法O-C都是兼容的,所以为了避免冲突O-C的关键字都是以@符号开始的,比如:@class、@public 、@try等。
O-C和C语言对比:
比较项目 | O-C和C语言对比 |
基本类型 | char、short、int、long、BOOL 这些基本类型他们都有。 |
布尔 | TRUE、FALSE、YES、NO |
基本语句 | if else、 switch、for 、while do、goto |
for扩展 | for(xx in xx) 这个是O-C特有的 |
id类型 | id类型是O-C特有的,每个目标都可以表达为id类型,可以认为是NSObject *,或者void * |
nil | O-C中nil等同于null,表示一个目标的指针 |
类定义:在O-C中类、字段和函数的定义都感觉比较奇怪,其实也就是习惯问题,你接触C的定义、java的定义这种形式的定义多了再让你去接触其他形式的定义你就感觉很不适应,多看多练就行了。类的声明使用关键字@interface 和 @ end,也就是把类放到这两个关键字中间,类的实现放到@implementation 和 @end中间,当你创建一个类的时候会生成两个文件一个是.h,一个是.m,.h文件存放类和函数的声明,.m文件存放类和函数的具体实现。下面以表格的形式来进行说明:
定义 | 说明 |
声明对象 | 所有O-C类,接口声明必须要带 * |
创建对象 | 以中括号的形式来创建:Dog * dog = [Dog alloc]; |
初始化 | 以中括号形式来初始化:[dog init]; |
销毁对象 | 以中括号形式来销毁:[dog release]; |
变量(属性)定义 | 变量必须定义在{ } 之间 |
函数方法定义 | 函数定义格式: 不带参数:- f,函数名是 f; 一个参数:- f:(int) x,函数定义前面必须加个- 号,f:是函数名,(int) x是参数; 多个参数定义格式:- f:(int) x :(int) y :(float) z,这个函数名是f:::, 这种形式也可以写成:-f:(int) x g:(int) y h:(float) z,这个函数名是f:g:h: |
函数的调用 | 函数的调用以[]来调用(参数中间要有空格,dog 是已经创建的一个对象): 不带参数的调用:int a = [dog f]; 带一个参数的调用: int a = [dog f:100]; 带多个参数的调用:int a = [dog f:100 :200 :300]; 多个参数另外一种调用:int a = [dog f:100 g:300 z:300] |
函数重载 | 我理解的是O-C之中没有函数重载的,比如已经定义了一个函数:- (int) f:(int) x, 就不能再定义:- (int) f:(float) x, 会报错的哦,如果不能这样定义我的理解就是这还 是重载吗? |
以上就是这次学习的内容,感觉写的很乱,条理不清晰,希望自己通过写博客能把自己的文笔表达能力提升上去。本人也是刚开始学习O-C,如果有哪些理解不到位的地方还请大家指明,谢谢!