iOS复习笔记12:分类

1 功能描述

1.1 向已经存在的类中添加方法,不能添加成员变量。

1.2 将类的实现放到不同的文件中

1.3 创建对私有方法的引用

2 格式

头文件(文件名:"类名+类别名.h")

#import "类名.h"

@interface 类名(类别名)

//新方法的声明

@end

源文件(文件名:"类名+类别名.m")

#import "类名+类别名.h"

@interface 类名(类别名)

//新的实现方法

@end

3 示例

假设现在有一个Person类,如下:

// Person.h
#import <Foundation/Foundation.h>

@interface Person : NSObject

@end

// Person.m

#import "Person.h"

@implementation Person

@end

现在我们想在Person类中添加一个eat和run方法:

// Person+action.h

#import "Person.h"

@interface Person (action)

- (void)eat;
- (void)run;

@end

// Person+action.m

#import "Person+action.h"

@implementation Person(action)

- (void)eat
{

}

- (void)run
{

}

这样Person类就拥有了eat和run方法,所有的都可以调用者两个方法。

时间: 2024-10-12 07:18:37

iOS复习笔记12:分类的相关文章

iOS复习笔记1:HelloWorld项目

2012年10月到2013年5月期间,一直都做iOS开发,后来开始做用cocos做游戏开发. 过去了那么久,复习一下以前学的东西. 一 新建工程 打开Xcode,选择File>Project>Single View Application,然后输入工程名HelloWolrd,选择保存路径. 创建完成之后保存,如图: 二 运行 单击上图左上角的三角形按钮,程序久可是运行了,以下界面一闪而过: 然后出现: 这就是用模拟器运行程序啦:如果闲模拟器太大,看不清楚,可以点击模拟器,然后Window>

iOS复习笔记14:常用数据结构之类

一 NSString/NSMutableString字符串 1 NSString <pre name="code" class="objc">NSString* s1 = @"string"; //NSString* s2 = [[NSString alloc] initWithFormat(@"%d is one",1)]; NSString* s2 = [NSString stringWithFormat(@&

iOS复习笔记8:autorelease详解

一 概念 iOS在程序在运行的过程中,会创建很多个释放池,自动释放池以栈的形式存放的(先进后出). 对象调用autorelease时,会被放入栈顶的自动释放池中. 当自动释放池销毁时,会对池的所有对象发送一次release消息: 所以发送autorelease之后引用计数不会立即-1. autorelease返回对象本身. 二 实例 // Person.h @interface Person @property(nonatomic, assign) int age; @end // Person

iOS复习笔记16:应用启动过程和工程结构

一 新建项目 打开Xcode->new->Project->iOS->Single View Application->下一步->输入工程名->下一步->选择路径->create 二 启动过程 1 载入程序到内存 2 在main函数中创建UIApplication 3 创建AppDelegate 4 开始主循环,监听事件 5 创建UIWindow,设置活动窗口 7 加载Info.plist文件,读取主storyboard文件 8 加载storyboar

iOS复习笔记3:类的基本定义

// Car.h // 类的声明 // 类名:Car // 属性:m_nSpeed // 行为:run #import <Foundation/Foundation.h> // NSObject @interface Car : NSObject { // 属性:成员变量(可以是基础类型,枚举,结构体和类对象指针) @public int m_nSpeed;// 默认初始化为0 } // 行为:方法(方法名,返回值,参数) - (void)stop; - (void)run:(int)spee

iOS复习笔记13:常用结构体

都需要包含Foundation.h头文件 CG:CoreGraphics框架简称,CG开头的在Foundation框架中有声明,但是没有实现 NS:NextStep 一 NSRange范围 1 定义: typedef struct _NSRange{ NSUInteger location; NSUInteger length; }NSRange; 2 示例: NSString* str = @"I love OC"; // NSRange* rg = {2, 4}; // NSRan

iOS复习笔记15:NSObject

为了描述方便,把如下代码贴出来: @interface Student:NSObject -(void)go; -(void)showName:(NSString *)name; -(void)introduce:(NSString *)name :(NSString*)address; @end Student* stu = [[Student alloc]init]; 一 创建和初始化方法 alloc allocWithZone new copy -- 只有不可变到不可变是浅拷贝(相当于re

iOS复习笔记11:协议和代理

一 功能 可以在协议中声明方法(不能声明变量), 某个类只要遵守这个协议,就相当于拥有协议中所有的方法声明. 父类准守协议,子类也拥有协议中的方法. 协议也可以准守另一个协议. 基协议NSObject(同时也是基类),NSObject基类也准守基协议. 基协议中包含了常用的内存管理方法:release,retain方法等. 二 定义 1 协议定义 @protocal 协议名 <NSObject> // 声明方法 @end 2 遵守协议 2.1 类 @interface 类名 : 父类名 <

iOS复习笔记10:使用Block

功能:保存一段代码,可以在任何时间执行. 标志:^ 跟函数类似: 1 可以保存一段代码 2 有返回值 3 有形参 4 调用方式 变量声明:更函数指针变量类似 返回值类型 (^变量名)(参数类型列表) typedef: 返回值和参数一致的block可以typedef为同一种类型 权限: block内部可以访问外面的变量: 但是,默认情况下,block内部不能修改外面的局部变量: 可以在局部变量加上__block关键字之后,这个变量就可以在block内部修改. 示例: // main.m #impo