知了博客

集天地之精华,吸日月之灵气

« 杂谈研发人员主要精力应该干什么谁之错 »

xcode objective-c categroy 与extersion

1,分类categroy
增加类方法一种手断,不能有成员变量。这个跟c++与java抽象类与接口还是有些不一样。类函数分类。
2.扩展extersion
匿名的categroy,实现可以有成员变量。

下面是实现的例子:

//
//  Category.h
//  objc
//
//  Created by sunkey on 12-8-13.
//  Copyright (c) 2012年 sunkey. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Computer : NSObject
{
    int i;
}

-(void)PCName;
//Category is implementing a method which will also be implemented by its primary class
//-(void)Width;

@end

//extersion
@interface Computer()
{
    int iValue;
}

-(void)SetIVaule:(int)newValue;
@end

@interface Computer (NoeBook)
{
   //Ivars may not be placed in categories
   //int j;
}
-(void)NoteName;
-(void)Width;
-(void)Height;
+(void)NSCPU;
@end

//
//  Category.m
//  objc
//
//  Created by sunkey on 12-8-13.
//  Copyright (c) 2012年 sunkey. All rights reserved.
//

#import "Category.h"

@implementation Computer
-(void)PCName
{
    i = -1;
    NSLog(@"pc %d\n",i);
    [self NoteName];
}

/*
-(void)Width
{
    i = 200;
    NSLog(@"width %d\n",i);
    
}
*/
-(void)SetIVaule:(int)newValue
{
    iValue = newValue;
}

@end

@implementation Computer (NoeBook)

-(void)NoteName
{
    //[self PCName];
    i = 1;
    NSLog(@"note %d\n",i);
}


-(void)Width
{
    i = 100;
    NSLog(@"width %d\n",i);
    
}
 
-(void)Height
{
    NSLog(@"height %d\n",i);
    
}
+(void)NSCPU
{
    NSLog(@"intel \n");
}

@end




扩展:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 90619 Code detection by Codefense  theme by BokeZhuti

Copyright know blog. Some Rights Reserved.站长(msn):webmaster#webgou.info(#换成@) 粤ICP备09183716号