posing

Posing 有點像 categories,但是不太一樣。它允許你擴充一個 class,並且全面性
地的扮演(pose)這個 super class。例如:你有一個擴充 NSArray 的
NSArrayChild 物件。如果你讓 NSArrayChild 扮演 NSArray,則在你的程式碼中
所有的 NSArray 都會自動被替代為 NSArrayChild。

FractionB.h


#import "Fraction.h"
@interface FractionB: Fraction
-(void) print;
@end


FractionB.m


#import "FractionB.h"
#import <stdio.h>
@implementation FractionB
-(void) print {
printf( "(%i/%i)", numerator, denominator );
}
@end


main.m


#import <stdio.h>
#import "Fraction.h"
#import "FractionB.h"
int main( int argc, const char *argv[] ) {
Fraction *frac = [[Fraction alloc] initWithNumerator: 3 denominator: 10];
// print it
printf( "The fraction is: " );
[frac print];
printf( "/n" );
// make FractionB pose as Fraction
[FractionB poseAsClass: [Fraction class]];
Fraction *frac2 = [[Fraction alloc] initWithNumerator: 3 denominator: 10];
// print it
printf( "The fraction is: " );
[frac2 print];
printf( "/n" );
// free memory
[frac release];
[frac2 release];
return 0;
}


output


The fraction is: 3/10
The fraction is: (3/10)
這個程式的輸出中,第一個 fraction 會輸出 3/10,而第二個會輸出 (3/10)。這是
FractionB 中實作的方式。
poseAsClass 這個 method 是 NSObject 的一部份,它允許 subclass 扮演
superclass。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值