Object-C Category和Extension的区别

参考:

http://stackoverflow.com/questions/3499704/difference-between-category-and-class-extension

http://www.tutorialspoint.com/objective_c/objective_c_extensions.htm

Category

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

Extension

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