[转]Objective C 的 Posing

Posing 有点像 categories,但是不太一样。它允 许你扩充一个 class,并且全面性地的扮演(pose)这个 super class。例如:你有一个扩充 NSArray NSArrayChild 物件。如果你让 NSArrayChild 扮演 NSArray,则在你的程序代码中所有的 NSArray 都会自动被替代为 NSArrayChild
例子:

#import "Fraction.h"

@interface FractionB: Fraction
-(void) print;
@end

@implementation FractionB;
-(void) print
{
  printf (" (%i/%i) ", numerator, denominator);
}
@end


int main (int argc, char *argv[])
{
  Fraction *a;
  Fraction *b;
  Fraction *result;

  [FractionB poseAs: [Fraction class]];

  a = [[Fraction alloc] init];
  b = [[Fraction alloc] init];

  [a setTo: 1 over: 3];
  [b setTo: 2 over: 5];

  [a print]; printf (" + "); [b print]; printf (" = ");
  result = [a add: b];
  [result print];
  printf ("\n");
  [a free];
  [b free];
  [result free];

  return 0;
}

 
输出结果:

(1/3) + (2/5) = (11/15)

Posing (扮演)和Categories(类目)的区别是:对于子类override父类方法的

情况,Categories 不能再调用父类的被重写的方法了;而Posing 可以通过“

[super 方法];”方式来调用父类被重写的方法。

 

转载于:https://www.cnblogs.com/IT-Chris/archive/2013/03/10/2953176.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值