读书时间 2011/06/17 - 2 Objective-C

本文档介绍了Objective-C的基础知识,包括语法特点、对象通讯方式、方法声明等,并深入探讨了类的定义、实例化过程及初始化方法。同时,文章还讨论了Objective-C作为动态语言的特性及其在iOS开发中的应用。

《Objective-C基础教程》

 

0. 杂记杂问

 

Q: 对象通讯总使用指针,所以,有没有这样的变量申明 Car car ????

Q: Objective-C++什么含义?

Q: -的含义?

-(void) draw;  // "-"表示此为方法申明,这是一种区分函数原型与方法申明的方式,后者者"-"

                     Q: "-"似乎表示instance method,与"+"对应,后者表示class method 2011/12/20

 

* iphone/ipad开发视频:http://6.cn/watch/14587346.html

 

 

1. chap 2.

* #import

可以处理重复引入*.h的问题

 

* @"Hello World!"完全不同于"Hello World!",前者类型是NSString,后者类型为char *

 

* BOOL

比C的bool还老,但YES/NO定义与C之true/false完全不同 

 

2. chap 3

 

* 接口与实现

@interface

@implementation

 

* 方法名:经常都会有":",如果有参数

example: setFillColor:

 

* 类访问属性

没有访问属性概念,也就没有private概念,原因是Objective-C是一个动态语言的副作用。

Q:Objectivc-C的动态语言特性还体现在什么地方?

 

* 实例化类

example:

shape[0] = [Circle new];

 

* self参数 = this

 

3. Chap4 继承

* 不支持多继承

Q: P54, 基地址+偏移:leopard???

 

* Super关键字

Q 方法调度机制:与C++的虚函数表比究竟有何区别?

    A:C++是通过函数指针访问相关方法,Ojbective-C如何呢?2011/12/21

 

4. Chap5 复合

Q:-(NSSTring *)description{}; 是在NSObject中定义的?

      A:Yes, I think so. 2011/12/21

* Car类例子

@interface Car : NSObject

{

    Engine *engine;

   Tire* tires[4];

}

 

@Implementation Car

 

-(id)init

{

 

    if(self=[super init]) {

        engine = [Engine new];

        tires[0] = [Tire new];

        ...

        return self;

} // init

 

-(void) print

{

    NSLog(@"%@", engine);   // Engine的descrption()方法被调用

    NSLog(@"%@", tries[0]);

    ...

}

 

int main(int argc, const char* argv[])

{

    Car * car;

    car = [Car new];

    [car print];

    return (0);

} // main

 

注:new一个Car时,完成两步:

# 分配内存空间

# 自动调用init

 

* 存取方法

 

* 命名惯例

getter: property

setter: setProperty

Q: 方法名中get的特别含义? 2011/12/21

 

* 中缀方法名

-(void) setTier: (Tier *)tier

           atIndex:(int) index

{

    ...

}

 

调用:

Tire * tire = [Tire new];

[car setTire: tire at Index: 2]

 

* @class 向前引用???

Q:导入与超类??? P79

 

5. Chap8 Foundation Kit快速教程

 

* 类方法

+的含义?

+(id) stringWithFormat:(NSString*) format, ...;

^ 类方法,相当于Java的静态方法

                                                                     ^ 参数数目不定

使用:

[NSSTring stringWithFormat:format, x,y];

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值