Objective-C基础教程1-6章节
最近不算很忙,又没有太多深入研究,按照惯例找一些没接触过的新东西看看学习学习,WiEngine,Box2d之后,这次轮到了Objective-C。Objectvie-C随着苹果设备的风靡,也是最热门的技术之一,无奈之前对C一直存在一些芥蒂,所以没有去接触,不过怎么说语言也是共通的,有些坎肯定还是要迈过的,特别是当下所谓跨Android/iPhone平台,其实都是用C++在开发,所以上上手也是很有必要。
下面是对看Objective-C基础教程1-6章后,对一些东西的笔记,并不是完整的教程,只是类似拾遗,将一些不同的,不熟悉的东西记下来(和之前Python笔记类似)
一切都源于Hello World 恒古不变的定律,熟悉一门语言结构最快也就是这个万能的程序了,Objective-C扩展名为.m(之后书中也有提到.mm就是C++风格)
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[]){
NSLog(@"Hello Objective-C");
return (0);
}
其中NSLog方法是Objective-C专属的一种类型,所有cocoa的对象都被冠以了NS前缀,作为区分。传入的参数@""表示字符串作为NSString被处理,程序其余部分和C类似,#import的含义也不言而喻
布尔值
Objective-C中的布尔变量有些许小的不同,参数类型为BOOL,值为YES/NO,其中YES为1,NO为0,占8位
需要注意的是,如果将一个int,short这样的值赋给BOOL,只有低位字节会发挥作用,这是特别要注意的,因为这意味着,并不是传统认为的,非零即为true
Objective-C中有一种特有的语法:[对象 操作] 这在之后会一直看到
关于Objective-C中的OOP
@interface
至少目前我还将其于java中的接口相类比,名称也一样,但是有人告诉我Objective-C中的interface并不同于接口,而类似于接口的Objective-C中有一个叫做协议的东西,这个以后看到了我会再加以对比区分
@interface Circle:NSObject
{
ShapeColor color;
ShapeRect bounds;
}
-(void) setFillColor: (ShapeColor) color;
-(void) setBounds: (ShapeRect) bounds;
-(void) draw;
@end
以上就是标准的一个@interface定义,应该很好理解,Circle含有2个变量color,bounds,拥有3个方法
特别注意方法的申明方式
(void) 表示返回类型 之后是方法名及参数
draw方法不含参数 也不用:
对于多个参数的方法申明
-(void) setTire: (Tire *) tire atIndex:(int) index;(这里的第二个参数看起来有些奇怪,但是在之后调用方法的过程中,atIndex会被用到)
Objective-C的方法调用使用了一种被称为中缀符的东西
看一下分别调用无参,1参和多参的语法
[circle draw];
[circle setFillColor:kRedColor];
[car setTire:tire atIndex:2];
@implementation
与名字相同,实现,就是对@interface所申明内容的具体实现
@implementation
-(void) setFillColor:(ShapeColor c)
{
color=c;
}
@end
这里的color=c其实就相当于self.color=c(这里我又要做类比了,目前的认识self就相当于java中的this指针)
有了@interface和@implementation之后,我们对一个类(对象)的定义就算完成,那么如何实例化一个对象呢
id shapes[3];
shapes[0]=[Circle new];
[shpaes[0] setBounds:rect];
...
这里又看到一个新的东西id,它是一种指向某个对象的指针,目前为止只是看到这一种用法,也没有太多认识,简单的被我理解成了索引
之后看到了new对象的方法[Circle new],再之后是调用对象的方法设置具体的参数
继承
@interface Circle:Shape
很简单的方法,Objective-C在继承规则上于java,C#无异,不允许多重继承,不过既然有接口(或者应该叫协议),那么自然同java一样,达到相同的目的自然不难,同样的,子类可以调用父类的方法,通过super,比如[super setColor:c];
Ojbective-C中的空值为nil
接下来 来看一个Car是被如何自动构建的
@implementation Car
-(id) init
{
if(self=[super init]){
engine=[Engine new];
...
}
return (self);
}
这一段有些理解不能,在书中的注释中说到,这里指如果超类可以完成所需的一次性初始化,需要调用[super init]。init方法的返回值id描述了倍初始化的对象。将[super init]的结果赋给self是Objective-C的标准惯例。
Objective-C中一样有getter/setter方法,但是在命名规则上需要注意
-(Engine *)engine;
-(void) setEngine: (Engine *) engine;
在set方法中 依然采取setXXX的方式 但是get方法则直接采用XXX 而非getXXX,以免混淆
拆分
一般将@interface部分放入.h文件中
#import <Cocoa/Cocoa.h>
@interface Tire:NSObject
@end
将其他部分放在.m中,在.m中记得引入该头文件
#import "Tire.h"
import下<>代表系统头文件 ""代表本地头文件
关键词@class 告诉编译器此处是一个类,还需要通过指针进行传递
@class Tire
@class Engine
...
Engine *engine
注意这只有在通过指针指向其他类的情况下可用,减少编译器负担,在继承的情况下不可用,因为他需要了解超类的信息
分享到:
相关推荐
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009...
Objective-C基础教程(入门教程).pdf
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...
资源名称:Objective-C基础教程(第2版) 资源截图在: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
《Objective-C基础教程》全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等...
人民邮电出版社《Objective-C基础教程》(含源代码) 影印版的PDF文件+原书附带的代码,特别适合学习iPhone,iPad入门开发学习~
《Objective-C基础教程》全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等...
Objective-C基础教程(第2版)书上源代码,学习Objective-C基础教程(第2版)配套使用。
最新版的objective-c基础教程,包括Objective-C在C的基础上引入的特性、Cocoa工具包的功能及框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。适合各类开发人员阅读。
Objective-C基础教程,适合初次接触Objective-C的人学习、认识Objective-C
Objective-C基础教程高清中文版(第2版)PDF。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
Objective-C 基础教程第二版,高清扫描版,Objective-C入门必备!
Amazon超级畅销书,好评如潮,全面解读Objective-C语言及Cocoa特性,用最通俗的语言阐释深奥的知识。... 通过阅读本书,再结合《iPhone开发基础教程》和《iPhone开发秘籍》,定能在iPhone开发进程中所向披靡!
《Objective-C基础教程(第二版)》英文版,一些描述比较晦涩难懂,虽然说是基础教程,但最好先学更基础的C语言再来看这本书比较好。。还有,作者废话有点多。。
清晰的Objective-C基础教程和随书源码,本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象...
经典教程 Objective-C 基础教程 pdf
这儿的运行时系统扮演的角色类似于Objective-C语言的操作系统,Objective-C基于该系统来工作。本文档将具体介绍NSObject类以及Objective-C程序是如何和运行时系统交互的。特别地,本文档还给出来怎样在运行时动态地加
Objective-C基础教程第二版pdf
Objective-C基础教程很适合初学苹果开发人学习,是一本非常不错的入门书。
Objective-C基础教程(Learn Objective-C)随书源码下载