• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Objective-C学习笔记

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、#import是GCC编译器提供的,Xcode在编译Objective-C、C和C++程序时都会使用它,#import可保证头文件只被包含一次,而不论此命令实际上在那个文件中出现了多少次。

  在C语言中,程序员通常使用基于#ifdef命令的方案来避免一个文件包含另一个文件,而后者又包含第一个文件的情况。而在Objective-C中,程序员使用#import实现这个功能。

2、NSLog()与printf()相比添加了一些特性,例如时间戳、日期戳和自动附加换行符(‘\n’)等。

3、Objective-C中的BOOL实际上是一种对带符号的字符类型(signed char)的定义(typedef),它使用8位存储空间。YES定义为1,而NO定义为0(使用#define)。

   Objecitve-C并不将BOOL作为仅能保存YES或NO值得真正的布尔类型来处理。编译器将BOOL认作8位二进制数,YES和NO值只是一种约定。

4、过程式程序建立在函数之上,数据为函数服务。面向对象编程从相反的角度来看待问题,它以程序的数据位中心,函数为数据服务。在OOP中,数据通过间接方式包含对自身操作的引用代码。

5、Objective-C不支持多继承。但是可以通过分类和协议来获取多继承的优点。

6、继承在子类和超类之间建立了一种“is a”(是一个)的关系;复合建立的则是“has a”(有一个)的关系。

7、在跨文件依赖关系中,头文件或源文件需要使用另一个头文件中的信息。文件之间相互重复的导入会增加编译次数,也会导致不必要的重复编译。而巧妙地使用@class指令能够减少编译时间,@class告诉编译器“相信我,你最终能够了解这个名称的类”,它可以减少不得不导入的头文件数量。

8、@synthesize是一种新的编译器功能,表示“创建该属性的访问器”。当遇到代码@synthesize rainHandling时,编译器将输出-setRainHandling:和-rainHandling方法的已编译的代码。

9、类别有两方面的局限性。第一,无法向类中添加新的实例变量。类别没有位置容纳实例变量。第二,名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。

10、Cocoa中的类别主要用于3个目的:将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,以及向对象添加非正式协议。

11、KVC介绍:键/值编码中的基本调用包括-valueForKey:和-setValue:forKey:。以字符串的形式向对象发送消息,这个字符串是我们关注的属性的关键。KVC需要解析字符串来计算答案,因此速度比较慢。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
2012年1月编程语言排行榜:Objective-C成为年度语言发布时间:2022-07-12
下一篇:
开启Objective-C---OC基础知识发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap