oc57--Category 分类

//
//  main.m
//  Category基本使用:1.不修改类而扩充类。2.对于一个庞大的类,分模块开发。

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+NJ.h"

/*
 方法:
 方法的声明:
 方法的实现:

 所以: 通过分类给某一个类扩充方法, 也分为声明和实现两个部分

 // 分类的声明
 @interface ClassName (CategoryName)
 NewMethod; //在类别中添加方法
 //不允许在类别中添加变量
 @end

 ClassName: 需要给哪个类扩充方法
 CategoryName: 分类的名称
 NewMethod: 扩充的方法

 // 分类的实现
 @implementation ClassName(CategoryName)
 NewMethod
 @end

 ClassName: 需要给哪个类扩充方法
 CategoryName: 分类的名称
 NewMethod: 扩充的方法

 */
int main(int argc, const char * argv[]) {
    Person *p = [[Person alloc] init];
    p.age = 30;
    [p say];

    [p playFootball];
    [p playBasketball];

    NSString;
    NSArray;
    return 0;
}
//  Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic, assign) int age;

- (void)say;

@end
//  Person.m

#import "Person.h"

@implementation Person

//-(void)say
//{
//    NSLog(@"age = %i", _age);
//}

-(void)say{
    NSLog(@"age= %i",_age);
}

@end
//
//  Person+NJ.h

#import "Person.h"

@interface Person (NJ)
// 扩充方法

- (void)playFootball;

- (void)playBasketball;

@end
//
//  Person+NJ.m

#import "Person+NJ.h"

@implementation Person (NJ)
// 实现扩充方法

- (void)playFootball
{
    NSLog(@"%s,%i", __func__,[self age]);
}

- (void)playBasketball
{
    NSLog(@"%s,%i", __func__,[self age]);
}
@end
时间: 2024-11-08 01:54:25

oc57--Category 分类的相关文章

Objective-C中的Category(分类)

1 Category概念:动态的为已经存在的类添加新的行为(方法) 2 Category(分类)创建的方法 (1)通过Xcode生成分类 (2)可以手动生成分类,在头文件里面生成2个@interface 例如: 在Student.h文件中 @interface Student:NSObject -(void)test1; @end 下面是Student的分类,test为分类的名称 @interface Student(test) -(void)test2; @end 在Student.m文件中

OC语法9——Category分类

Category(分类): 当我们在开发过程中要给类添加新的方法时,一般不要去动原类. 再不改动原类的限制下,怎么拓展类的方法?以往我们的做法是新建子类使其继承该类,然后通过子类拓展类的行为. OC提供了一种全新的方法:Category(分类).在不改动原类的基础上动态的拓展类的行为. 假如我们要动态拓展Student类,则应该建一个分类(Category),注意:文件命名要有规范,Student+StuOthers.h 格式:只要在被扩展的类名(原类)后加(),在括号里写分类名(拓展类名):

黑马程序员— OC核心语法之构造方法、Category分类、类的本质、description和SEL

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一章我们学习了OC的一些核心语法,初步了解了OC作为一门开发语言的一些较为深层次的知识.本章我们继续学习OC的核心语法,主要包括OC的构造方法,Category分类,类的本质及深入研究,以及description关键字和SEL关键字. 第一讲     构造方法 1. 构造方法 构造方法是用来初始化对象的方法,是一个对象方法,以减号"-"开头,构造方法其实就是init方法,初始化完毕

obj-c9[[NSDate,{Category分类,Extension,管理&#39;私有”方法,Protocol (协议)}]

#import <Foundation/Foundation.h>//#import "Person.h"#import "NSString+SayHiMessage.h"#import "NSMutableArray+ChangeArray.h" #import "NSString+ExchangeChineseToEnglish.h" #import "NSString+EmailValidation

OC category (分类,类目),日期类常用用法

学了这么久OC我们都知道OC中的类分为系统类和自定义的类,当我们在使用系统为我们提供的类时有时往往不能满足我们的需要,例如,字符串NSString类提供了比较字符串的方法compare,为数组排序时系统默认的是升序,当需要为数组按降序排序时,一种途径是需要新建一个类写一个降序的方法,而另一个途径就是系统提供的category(分类,类目),分类(类目,category)的目的为了给没有源代码的类添加方法(只能添加方法,不能添加实例变量),是扩充一个类功能的方式之一,为原有类扩充的方法会成为原类的

Objective-C( Category 分类,非正式协议,分类延展)

分类: 主要是给原来类增加一些方法;不可以增加成员变量 Person (Person+eat) 非正式协议: 非正式协议就是类别,即凡是NSObject或其子类Foundation框架中的类增加的类别,都是非正义协议 给NSObject写一个类别,NSObject 类名(eat),NSObject子类都可继承里面的方法 分类(category)延展 延展类别又称类的扩展: @interface Person类别 (空的)// 类扩展 { // 可以添加属性 int _age: } // 扩充方法

[Objective-c 基础 - 2.8] category分类/类别/类目

A.给某个类扩充方法(不改变原来的类) 例如,给类Person加上名为Simon的category,加上一个-study方法 使用()注明 Person+Simon.h 1 @interface Person (Simon) 2 - (void) study; 3 @end 4 5 Person+Simon.m 6 @implementation Person (Simon) 7 - (void) study 8 { 9 NSLog(@"学习----"); 10 } 11 @end 使

第七讲.NSDate,category(分类),extension(延展),protocol(协议),delegate(代理)

一.掌握NSDate和NSDateFormatter的使用 NSDate是Cocoa中?用于处理日期和时间的基础类,封装了某一给定的时刻(含日期,时间,时区). 了解NSDate的创建,如何计算当前时间,时间间隔,以及时间日期与字符之间的互转. 1>.NSDate创建,当地时间计算,时间按间隔计算,时间与字符之间的互转 练习题1:计算当前时间与一个固定时间按的时间差 练习二:字符串转化为日期对象 二.掌握Category的定义和使用(只能为类扩展类方法或实例方法) 1.主要作用是为:没有源代码的

&lt;&lt;黑马程序员&gt;&gt;category分类的使用

分类 分类的作用:在不改变原来类的基础上,可以给类增加一些方法. 使用注意 : ①  分类只能增加方法,不可以增加成员变量                 ②  分类的方法在实现中可以访问成员变量,不过成员变量必须手动实现.                 ③  分类可以从新实现原来类的方法,但是会覆盖原来类的方法,导致原来类的方法不可以使用.                 ④   方法调用的优先级:分类(最后参与编译的分类) > 父类,如果几个分类中都实现了原来类中的一个方法,再调用次方法时

OC学习笔记 xcode6 category 分类创建和使用

xcode6 分类 catepory 位置