【objective-c】学习积累(learning objective-c)
来源:互联网 发布:win7远程桌面连接mac 编辑:程序博客网 时间:2024/06/05 17:45
1、objective-c中对象的指针与非指针有什么区别?如指针调用是:[id message],那么非指针怎么调用?
2、对多个参数的声明和使用还不是很清楚
3、几个特殊对象
id:object的指针,可表示一切对象的指针
nil:空指针,调用空指针不会有任何效果,也不会导致异常
self:相当于this指针
super:指向父类
self与super的区别:self指向真正的对象,有内存空间,可以作为参数被调用。但super不是一个真正的对象
4、SEL
message通常被认为是一个seelctor 或者 message selector。而SEL则用来表示一个selector。
如aObject有一个方法aMessage,则可以如下定义:
SEL aSelector = @selector(aMassage)
或者: SEL aSelector = @selector(aMessage:) //如果aMessage有参数,那么后面就要带冒号,这两个aSelector是不一样的
SEL使message能动态地在消息表达式中使用,NSObject定义了以下接口:
(id) performSelector: (SEL)aSelector
以下两种方式效果一样:
[aObject aMessage]
[aObject performSelector: @selector (aMessage)] //但这种使用方式没有什么增益,一般不这么用
performSelector的用处在于能够动态调用不同的message:
BOOL isHighlightDraw = ...
SEL shapeDrawingSelector;
if ( isHighlightDraw )
{
shapeDrawingSelector = @selector( drawHighlighted );
}
else
{
shapeDrawingSelector = @selector( draw );
}
...
Shape *aShape = ...
[aShape performSelector: shapeDrawingSelector];
5、respondsToSelector:判断一个对象是否能够响应一个message
id anObject = ... // object that conforms to a protocol
SEL optionalSelector = @selector( optionalMethod );
if ( [anObject respondsToSelector: optionalSelector] ) //通过判断,避免调用anObject无法响应的消息,造成崩溃
{
[anObject optionalMethod];
}
6、objective-c中使用函数调用方式:IMP,相当于一个函数指针,可以像C语言一样采用函数调用的方式(function call)
7、引用计数
10 - (void) setGreetingText: (NSString*) newText
11 {
12 [newText retain]; //引用加+,防止newText被释放
13 [greetingText release]; //引用-1,
14 greetingText = newText;
15 }
当对象创建时,计数初始化为1。当计数为0时,在内存回收前会调用对象的dealloc()方法。因此可以重写该方法,在里面release对象用到的实例变量,防止内存泄露。
记得重写dealloc()方法时,在方法的最后一定要调用[ super dealloc],否则无法调用父类的dealloc,导致父类中定义的变量产生泄露
- 【objective-c】学习积累(learning objective-c)
- objective-c 算法积累
- Objective-C-语法积累
- Objective-C Learning notes
- Objective-C入门(Learning Objective-C)
- Objective-C入门(Learning Objective-C)
- Objective-c 学习 (1)
- Objective-c 学习(2)
- Objective-C 2.0 学习笔记一(Objective-C 程序设计)
- Objective-C学习笔记
- Objective-C 学习记录
- Objective-C 学习笔记
- Objective-C学习笔记
- Objective-C学习资料
- Objective-C学习
- iOS-学习 Objective-C
- objective c 学习笔记
- Objective-C 学习笔记
- Maven2插件开发入门
- 8086寄存器
- 计算pi的方法
- pcDuino的DIY : 移植BusyBox
- 关于远程教育行业的移动平台设计
- 【objective-c】学习积累(learning objective-c)
- 添加重做日志组、成员
- vim配置步骤
- opencv图像的读入、灰度化、二值化、反色
- 标准输入流中空白字符的怪异 —— 区分 scanf 与 cin
- Tutorial 13 - Camera Space
- 求质数算法的N种境界 (N > 10)
- Win7下oracle10g配置图解
- www.baidu.com