1、所有Objective-C语言的对象都必须这样声明:
NSString *someString = @"the string";
它声明了一个名为somgString的变量,其类型是NSString。也就是说此变量为指向NSString的指针。所有对象所占内存总是分配在堆空间中,而绝不会分配在栈中。分配在堆中的内存必须直接管理。(现在是直接使用引用计数进行自动管理了。不需手动管理)而而那些定义中不含的变量分配在栈上的内存则会在其栈桢弹出时自动清理。
2、除非确有必要,否则不要引入头文件。一般来说应在某个类的头文件中使用前向声明@class
,并在实现文件中引入那些类的头文件。这样做可以尽量降低类之间的耦合。
3、有时无法使用向前声明,比如要声明某个类遵循一项协议。这种情况下,尽量把该类遵循某协议的声明移至分类中。如果不行的话就把协议单独放在一个头文件中,然后将其引入。
4、不要用预处理指令定义常量。这样定义出来的常量不含类型信息,编译器只是会在编译前据此执行查找于替换操作。即使有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量不一致。在实现文件中使用static const
来定义只在编译单元内可见的常量:如static const NSTimeInterval kAnimationDuration = 0.5;
,在头文件中使用extern来声明全局常量,并在相关实现文件中定义其值。这种常量要出现在全局符号表中,通常用与之相关的类名做前缀。如:.h extern NSString *const EOCLoginNotification; .m NSString *const EOCLoginNotification = @"EOCLoginNotification";
5、ARC只负责管理Objective-C对象的内存。尤其要注意CoreFoundation
对象不归ARC管理,开发者必须适时调用CFRetain/CFRelease
。
6、在dealloc
方法中只释放引用并接除监听。
7、释放对象有两种方式:一种是调用release
方法,使其保留计数递减;另一种是调用autorelease
方法,将其加入自动释放池中,自动释放池用于存放那些需要在稍后某个时刻释放的对象。
8、选择与你公司、应用程序或者二者皆有关联之名称作为类名的前缀,并在所有代码中均使用这一前缀。
Effective Objective-C 2.0读书笔记
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 第一章 熟悉Objective-C 1.OC的起源 oc使用了消息结构而非函数调用。使用消息结构的语言,其运行时...
- 最近打算把Effective Objective-C 2.0重新再精读一遍,所以在此留下笔记,一方面是监督自...
- 本篇博客作为读书笔记,主要记录和整理阅读EOC(《Effective Objective-C 2.0 编写高质量i...
- 这本书中的内容都是精华,文章也很简洁了,但是我要让他更简洁更易懂,由于我是一个初学者,所以就用我自己能够理解的直白...