objective-c 编程基础(3.3 分类和协议)
来源:互联网 发布:nba历届最佳新秀数据 编辑:程序博客网 时间:2024/06/07 14:47
【分类】
分类,适用于给原有类添加新的方法,不适合修改、增加原有类的变量、不适合重载原有类的方法。
在分类里,可以调用原有类的变量、方法。
如下图所示:
#import "Person.h"//分类一般用于添加新的方法,不适合修改或增加原有的实例变量、重载原有的方法。@interface Person (sport)- (void) sport;- (void) reset;@end
#import "Person+sport.h"@implementation Person (sport)-(void)sport{ NSLog(@"%@去运动了",self.name); [self print];}-(void) reset{ NSLog(@"%@需要休息",self.name);}@end分类的使用:
#import <Foundation/Foundation.h>#import "Person.h"#import "Person+sport.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Person *person = [[Person alloc] initWithName:@"小明"]; [person sport]; [person reset]; } return 0;}
【协议】
协议跟java 的接口(抽象类)差不多。
协议的定义格式:
@protocol 协议名 <父协议>
定义方法
@required:这个表示这个方法是其他类必须实现的,也是默认的值
@optional:这个表示这个方法对于其他类实现是可选的
@end
#import <Foundation/Foundation.h>@protocol Ability<NSObject>@required //必须要实现的方法-(void) breath:(int) ath;-(void) study;@optional //可选实现的方法-(void) work;@end@interface Person : NSObject <Ability>//属性@property(nonatomic,strong,readwrite) NSString *name;//方法-(Person*) initWithName:(NSString*) name;-(void) print;@end
#import "Person.h"@implementation Person-(Person*) initWithName:(NSString*) name{ self = [super init]; if (self) { [self setName:name]; } return self;}-(void) print{ NSLog(@"姓名为%@",self.name);}//遵守协议-(void) breath:(int) ath{ NSLog(@"%@呼吸了%i次",self.name,ath);}-(void) study{ NSLog(@"%@正在学习",self.name);}@end上面的代码中NSObject不是我们之前说的NSObject类了,而是NSObject协议,他也是OC中第一个协议,这个名字相同在OC中是没有关系的。
协议的调用:
#import <Foundation/Foundation.h>#import "Person.h"#import "Person+sport.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Person *person = [[Person alloc] initWithName:@"小明"]; //分类方法 [person sport]; [person reset]; //协议方法 [person breath:3]; [person study]; } return 0;}
阅读全文
0 0
- objective-c 编程基础(3.3 分类和协议)
- Objective-C基础—分类和协议
- objective-c 编程基础(五 分类)
- objective-c 编程基础(六 协议)
- Objective-C Runtime整理(分类和协议)
- objective c 学习笔记:分类和协议
- Objective-C的分类和协议
- objective -c之分类,协议。
- Objective-C: 协议、分类、扩展
- Objective-c 使用分类和协议的目的
- Objective-C分类 (category),扩展(Extension)和协议(protocol)
- 【Effective Objective-C 2.0读书笔记】第四章:协议和分类
- Objective-C 学习笔记 11 分类和协议
- objective-C程序设计学习笔记3--分类和协议
- obj-c编程08:分类和协议
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十一章 分类和协议
- Objective-C第七讲-分类与协议
- Objective-C关于分类、扮演、协议
- STL容器学习总结(二)
- linux下批量删除空文件(大小等于0的文件)的方法
- Python 中各种imread函数的区别与联系
- JAVA面试题
- ######springmvc中方法返回值为String时@responseBody不能返回json对象。
- objective-c 编程基础(3.3 分类和协议)
- Win7下DOS窗口解决Fatal error in launcher:Unable to create process using ' '''
- F7
- 单机版Redis的安装
- Leetcode:Copy List with Random Pointer
- 详细介绍网站分页(Django)
- Django模型(数据库)
- (算法分析Week14)Arithmetic Slices[Medium]
- python中not的用法