《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];