Objective-C学习笔记-第四天(1)

时间:2023-03-09 18:45:51
Objective-C学习笔记-第四天(1)

解决以下昨天遇到的问题

1.@class与import是怎么样的呢?参考:http://www.cnblogs.com/ios8/p/ios-oc-test.html

在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。

  @class的作用是告诉编译器,有这么一个类,用吧,没有问题

  @class还可以解决循环依赖的问题,例如A.h导入了B.h,而B.h导入了A.h,每一个头文件的编译都要让对象先编译成功才行,@class就可以解决这个问题。

2.类别Category与Extension的区别。参考:http://blog.****.net/yasi_xi/article/details/41119939

Category

  • 用于给class及其subclass添加新的方法
  • 有自己单独的 .h 和 .m 文件
  • 用于添加新方法,而不能添加新属性(property)

Extension

  • Extension常被称为是匿名的Category
  • 用于给类添加新方法,但只作用于原始类,不作用于subclass
  • 只能对有implementation源代码的类写Extension,对于没有implementation源代码的类,比如framework class,是不可以的
  • Extension可以给原始类添加新方法,以及新属性