iOS基础知识:类目、延展

转载自http://www.tuicool.com/articles/AJ7FfeN

一 、类目: 为已存在的类添加新的方法。但是不能添加实例变量。

应用:1 、  对现有的类进行扩展,  如:系统中的类,在类目中增加的方法会被子类继承,而且在运行时跟其他的方法没有区别。

2、作为子类的替代方式,  不需要定义和使用一个子类,可以通过类目直接向已有的类里增加方法。

3、  对类中的方法进行归类,利用catigory把一个庞大的类划分为小块来分别进行开发,从而更好地对类中的方法进行更新和维护。

4、  和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。

         局限性: 1、 无法向类目中添加 新的实例变量。

2、  类目中的方法具有更高的优先级, 若在类目中覆盖原始类的方法(重载)。会引起super消息的无效,因此,一般不要覆盖现有类中的方法。

                                  如果确实要重载,那就通过继承创建子类来实现。

命名方式:  类名+扩展方法,如“UIAlertView+AFNetworking”。类目的接口声明与类的定义十分相似,但类目不继承父类,只需要带有一个括号,表明该类目的主要用                                  途。

在AFNetworking中有这样一个类目、实现附带alterview 的网络请求。 

         例: UIAlertView+AFNetworking.h文件中

<span style="font-family:System;font-size:12px;">#import <Foundation/Foundation.h>
@interface UIAlertView (AFNetworking)
+ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task delegate:(id)delegate;</span>
            UIAlertView+AFNetworking.m

文件中

<span style="font-family:System;font-size:12px;">#import "UIAlertView+AFNetworking.h"
@implementation UIAlertView (AFNetworking)
+ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task delegate:(id)delegate
{
    [self showAlertViewForTaskWithErrorOnCompletion:task delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil];
}</span><span style="font-size:12px;font-family: 宋体, 'Arial Narrow', arial, serif;">
</span>

二、延展:  延展的作用就是定义自己的私有方法。

形式和类目相同,不用新创建文件, 延展中定义的方法在类本身的@implementation代码区域中进行实现。

                      当在定义延展的时候不提供类目名时,延展中定义的方法既被视为“必须实现”的API在这种情况下,如果方法没有实现代码,那么编译器会报警告,这个时候方法的实现就一定要出现在类主体的@implementation代码块中了。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值