您的位置:首页 > 其它

10.类别

2016-01-25 17:23 204 查看
1.创建类别
     类别是一种为现有的类添加新方法的方式。通常会以“类别名+类别名称”的风格命名。
  1.1类别的缺陷
       类别有两个缺陷。第一是无法向类中添加新的实例变量。类别没有向空间容纳实例变量。第二个就是名称冲突,也就是类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,导致方法无法不再可用。有些编程人员会在自己的类别方法中添加一个前缀,以确保不会发生名称冲突。
  1.2类别的优势
       在Coco中,类别主要有3个用途:将类的实现代码分散到多个不同文件或框架中,创建对私有方法的前向引用,以及及向对象添加非正式协议。
2.类扩展
      特殊的类别:类扩展。这个类别的特点之一就是不需要名字。特点如下:
      -正如我们之前指出的,它不需要名字。
      -你可以在包含你的源代码的类(也就是你自己的类)中使用它。
      -你可以添加实例变量。
      -你可以将只读权限改成可读写的权限。
      -创建数量不限。
3.非正式协议和委托类别
     Cocoa中的类经曾会使用一种名为委托的技术,委托是一种对象,由另一个类请求执行某些工作。比方说,当在应用程序启动时,AppKit的NSAppliaction类会询问其委托对象是否应该打开一个无标题窗口。NSWindow类的对象会询问它们自己的委托对象是否允许关闭某个窗口。
     最常见的情况是,编写委托对象并且将其提供给其他一些对象,通常是Cocoa框架中的对象。通过实现特定的方法,你可以控制Cocoa中对象的行为。
   3.1委托和类别
      委托强调类别的另一种应用:被发送给委托对象的方法可以声明为一个NSObject的类别。
      创建一个NSObject的类别称为“创建一个非正式协议”。非正式协议只是一种表达方式,它表示“这里有一些你肯能希望实现的方法,你可以使用它们更好的完成工作”。
   3.2响应选择器
      选择器只是一个方法名称,但它以Objective-C运行时使用的特殊方式编码,以快速执行查询。可以使用@selector()编译指令圆括号中的方法名称来指定选择器。

 小结:
   利用类别可以声明非正式协议。非正式协议是NSObject的一个类别,他列出了对象可以响应的方法。非正式协议用于实现委托,委托是一种允许你轻松制定对象行为的技术。
   选择器可以在代码中指定特定的Objective-C消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: