Objective-C的学习笔记是本文要介绍的内容,主要来学习Objective-C的属性特点、NSAutoreleasePool的了解、Emacs的移动快捷键+Xcode常用键的内容,来看详细内容讲解。
1、Objective-C 属性特性(assign , retain , copy , readonly , readwrite)
assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。
retain:指定retain应该在后面的对象上调用,前一个值发送一条release消息。你可以想象一个NSString实例,它是一个对象,而且你可能想要retain它。
copy:指定应该使用对象的副本(深度复制),前一个值发送一条release消息。基本上像retain,但是没有增加引用计数,是分配一块新的内存来放置它。
readonly:将只生成getter方法而不生成setter方法(getter方法没有get前缀)。
readwrite:默认属性,将生成不带额外参数的getter和setter方法(setter方法只有一个参数)。
2、了解NSAutoreleasePool
NSAutoreleasePool是一个存放对象的集合,添加到NSAutoreleasePool的对象能够被自动释放。
自动释放其实就是在NSAutoreleasePool被清空或是销毁时向池里所有的对象发送一条release消息。
对象不会自动入池,只有当对象发送一条autorelease消息时才会被添加到当前的池中。可以想象池在一个栈中,当前池在栈顶,每创建一个新的池,就压入,使用drain或者release时,就弹出。
当有对象是Autorelease的对象,而当前没有NSAutoreleasePool的话,就会提示内存泄漏(Just Leaking)。一般来说,只要不是用new、alloc、copy方法创建一个对象的话,我们就假设该对象的引用计数为1,而且被添加到NSAutoreleasePool中。
如下面代码就会提示内存泄漏:
NSDate *date = [NSDate date];
NSLog(@"%@",[date description]);
return 0;
/*
objc[3466]: Object 0x1001149c0 of class __NSDate autoreleased
with no pool in place
- just leaking - break on objc_autoreleaseNoPool() to debug
*/
NSDate *date = [NSDate date];
NSLog(@"%@",[date description]);
return 0;
/*
objc[3466]: Object 0x1001149c0 of class __NSDate autoreleased
with no pool in place
- just leaking - break on objc_autoreleaseNoPool() to debug
*/
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
关于drain和release的问题可以在此处找到说明。在非GC环境下,两者的作用是相同的。否则你没有理由去使用release,给NSAutoreleasePool发送drain会提醒GC处理池中的对象。
3、Emacs的移动快捷键+Xcode快捷键
虽然不想在学Emacs的使用,但为了在Mac下使用的更顺畅,还是记录下来,因为这些xcode快捷键键可以在Xcode、TextEdit、Safari的URL地址栏等处使用。
control-F 向右边(Forward)移动
control-B 向左边(Backward)移动
control-N 向下(Next)移动一行
control-P 向上(Previous)移动一行
control-K 删除(Kill)光标后的代码
control-A 移动到行首(同command+左箭头)
control-E 移动到行尾(同command+右箭头)
control-T 转置(Transpose,交换)光标两边的符号
control-D 删除(Delete)光标右边的字符
control-L 将插入点置于窗口正中(不解)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
Xcode快捷键:
command+[ 左移代码块
command+] 右移代码块
Tab 接受代码提示
Ese 显示代码提示
Control+. 循环浏览代码提示
Shift+Control+. 反向浏览代码提示
Control+/ 移动到代码提示的下一个点位符
Command+Control+S 创建快照
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
小结:关于Objective-C的属性特点、NSAutoreleasePool的了解、Emacs的移动快捷键+Xcode常用键的内容的内容介绍完了,希望通过本文的学习能对你有所帮助!