Objective-C知识点汇总

整理Objective-C基础教程

1.对C语言的扩展

Xcode的.m扩展名表示文件含有Objective-C代码,应由Objective-C编译器处理。C编译器处理名称以.c结尾的文件,C++编译器处理.cpp文件,而.mm文件可以混编C、C++、Objective-C三类代码,所有这些编译工作全由GCC(GNU Complier Collection,GUN编译器集合)处理,这个编译器能够理解C语言的全部3个变体。

#import<Foundation/Foundation.h>语句告诉编译器查看Foundation框架中的Foundation.h头文件,#import可保证头文件只被包含一次。

框架是一种聚集一个单元的部分集合,包含头文件、库、图像声音文件等。

NSLog(@"");里双引号前的@符号表示引用的字符串应该作为Cocoa的NSString元素来处理,NSLog()其本质上就是Cocoa中的printf()函数它接受一个格式字符串,并将后续参数的值插入到这个格式说明符中。

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


2.面向对象(OOP)编程基础知识

封装:又叫隐藏实现,就是只公开代码单元的对外接口,而隐藏其具体实现。

继承:一种代码重用方式,在Objective-C里只有单重继承。

符合:即将各个部分组合在一起,严格地讲,只有对象间的组合才能叫复合。

间接:不在代码中直接使用某个值,而是使用指向该值的指针。

类:是一种结构,它表示对象的类型,对象引用类来获取和本身有关的各种信息,特别是运行什么代码来处理每种操作,Objective-C编程风格建议开发人员使用首字母大写的类名。

对象:是一种结构,它包含值和指向其类的隐藏指针。

实例:“对象”的另一种称呼。

消息:是对象可以执行的操作,用于通知对象去做什么,对象接受消息后,将查询对应的类,以便查找正确的代码来运行。

方法:是为响应消息而运行的代码,根据对象的类,消息可以调用不同的方法,改变方法的实现时需要重写(override)集成方法。

接口:是对象的类应该提供的特性的描述,通常,接口被成为API(application  proramming interface)。

实现:是使接口正常工作的代码。

超类:是你所继承的类。

父类:是超类的另一种表达方式。

子类:是实施继承的类。

孩子类:是子类的另一种表达方式。


3.源文件组织

如果你看到的头文件名是用尖括号括起来的,那么这个头文件对你的项目来说是只读的,因为它属于系统;如果头文件名是被引号括起来的,那么你(或参与这个项目的其他人)就可以编译它。

如果头文件没有引入而提示错误消息,有两种方法可以解决这个错误问题。第一种就是用#import语句导入类名.h,这样编译器会获得关于这两个类的大量信息,另一个更好的办法,加入@class类名;@class创建了一个向前引用,就是在告诉编译器:“相信我,以后你会知道这个类到底是什么。但是现在,你只需要知道这些。“另外,如果有依赖关系,@class也很有用,即A类使用B类,B类也使用A类,使用#import语句会让这两个类相互引用而最后出现编译错误,而使用@class这两个类就可以互相引用了。

在Cocoa中,当看到字符“CF”时,就是看到了苹果公司Core Foundation框架相关的内容,Core Foundation框架与Cocoa一样,但它是用C语言实现的它的大部分代码都是开源的。

PS:CF更接近底层,更多的用C语言实现

Category(类目)的缺点:

  1. 如果一个已经存在的方法被新方法覆盖,那么将没有任何途径可以对旧方法进行调用。这一点和继承是不同的,子类对父类成员函数重写(override),但我们依然可以对父类中的被重写的成员函数进行调用。
  2. 如果有多个category同一个class的成员函数进行重写,那么具体的行为是未定义

Category(类目)的应用:

  1. 对类进行扩展或patch。
  2. 使用category或(anonymous category)来模拟实现private method。
  3. 使用category(informal protocol)来实现delegation,在cocoaframework中就大量使用了category来声明delegate methods。
  4. 利用category把一个庞大的class划分为小块儿来分别进行开发,从而将functionality更好的进行划分,利于维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值