[编写高质量iOS代码的52个有效方法](一)Objective-C基础
参考书籍:《Effective Objective-C 2.0》 【英】 Matt Galloway
先睹为快
1.了解Objective-C语言的起源
2.在类的头文件中尽量少引入其他头文件
3.多用字面量语法,少用与之等价的方法
4.多用类型常量,少用#define预处理器指令
5.用枚举表示状态、选项、状态码
目录
第1条:了解Objective-C语言的起源
Objective-C与C++,Java等面向对象语言的区别在于Objective-C使用“消息结构”,而不是“函数调用”。Objective-C语言是由消息型语言鼻祖Smalltalk演化而来。
消息与函数调用之间的语法区别:
<code class="hljs javascript has-numbering"><span class="hljs-comment">// 消息(Objective-C)</span> <span class="hljs-built_in">Object</span> *obj = [<span class="hljs-built_in">Object</span> <span class="hljs-keyword">new</span>]; [obj performWith:parameter1 and:parameter2]; <span class="hljs-comment">// 函数调用(C++)</span> <span class="hljs-built_in">Object</span> *obj = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Object</span>; obj->perform(parameter1,parameter2);</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul>
关键区别在于:使用消息结构的语言,其运行时所应执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器决定。Objective-C的重要工作都由运行时组件而非编译器完成。
Objective-C是C的超集,所以C语言中的所有功能在编写Objective-C代码时依然适用。理解C语言的内存模型尤为重要,这有助于理解Objective-C的内存模型及其引用计数机制的工作原理。Objective-C语言中的指针是用来指示对象的。想要声明一个变量,另其指代某个对象:
<code class="hljs objectivec has-numbering"><span class="hljs-built_in">NSString</span> *someString = @<span class="hljs-string">"the string"</span>; <span class="hljs-built_in">NSString</span> *anotherString = someString;</code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>
两个变量都是指向NSString的指针。所有Objective-C语言的对象都必须这样声明,因为对象所占内存总是分配在堆中,而不是栈中。不在再栈上分配Objective-C对象。而两个变量所占内存都分配在栈上,且两块内存里的值一样,都是NSString对象的内存地址。
http://jz.gexing.com/wuxienanpaisanshu/post/4190011
http://jz.gexing.com/wuxienanpaisanshu/post/4190010
http://jz.gexing.com/wuxienanpaisanshu/post/4190011
http://jz.gexing.com/wuxienanpaisanshu/post/4190010