类目category 扩展extension 协议protocol
来源:互联网 发布:vue weixin js sdk 编辑:程序博客网 时间:2024/05/18 03:47
通过Category 添加的方法会成为元类的的一部分 达到扩展类的功能
#import "NSArray+EasyLog.h"
@implementation NSArray (EasyLog)
-(NSString *)descriptionWithLocale:(id)locale{ //self.count数组个数 字符串无符号长整型unsigned long
NSMutableString *str = [NSMutableStringstringWithFormat:@"%lu(\n",(unsignedlong)self.count];
for (id obj in self) {
[str appendFormat:@"\t %@,\n",obj];// \t前进四格
}
[str appendFormat:@")"];
return str;
}
-(void)PrintArrayCount{
NSLog(@"当前数组元素个数:%lu",self.count);
}
@end
NSArray *myLove = [NSArray arrayWithObjects:@"爸爸",@"妈妈",@"弟弟",@"妹妹",@"My刘先生", nil];
// NSLog(@"%@",myLove);
// [myLove PrintArrayCount];
//extension(扩展延展) Category(类目)区别
/* 1、作用:
类目是为没有源代码的类扩展的方法
延展的作用是管理类的私有方法
2、格式上:
类目需要定义一个新的.h .m
延展可以直接写到现有类的.m文件中
*/extension(扩展 延展)在自己类中扩展
#import "Myself.h"
@interface Myself (Myself_Extention)
-(void)myWright;
-(void)myGender;
-(void)myPhone;
-(void)myBankCardPassWord;
@end
@implementation Myself
-(void)myWright{
NSLog(@"myWright:98");
}
-(void)myGender{
NSLog(@"myGender:女");
}
-(void)myPhone{
NSLog(@"myPhoneNumber:123456");
}
-(void)myBankCardPassWord{
NSLog(@"myBankCardPassWord:110");
}
@end
protocol 协议 代理
n/Foundation.h>
//MakeBoyFriend 协议名字
@protocol MakeBoyFriend <NSObject>
//协议中默认是必须实现的
-(void)makeMoney;//会挣钱
-(void)doHouseWork;
-(void)kind;
-(void)tall;
-(void)someTimeAngry;//偶尔不生气
-(void)cook;
-(void)youmo;
-(void)faceBeautiful;//漂亮
@optional //可选择的在协议中默认方法必须实现 如果加上@optional下边的方法可选择实现,实现也可以 不实现也没问题
-(void)washCloth;//会洗衣
-(void)angry; //生气
@end
#import "LiuXianShen.h"
#import "MakeBoyFriend.h"
@implementation LiuXianShen
-(void)makeMoney{//会挣钱
NSLog(@"挣钱");
}
-(void)doHouseWork{
NSLog(@"做家务");
}
-(void)kind{
NSLog(@"善良");
}
-(void)tall{
NSLog(@"178");
}
-(void)someTimeAngry{//偶尔不生气
NSLog(@"不生气");
}
-(void)cook{
NSLog(@"会做美食");
}
-(void)youmo{
NSLog(@"幽默风趣");
}
-(void)faceBeautiful{//漂亮
NSLog(@"帅气,真男人");
}
-(void)washCloth{
NSLog(@"亲爱的,拿来给你洗");
}//会洗衣
@end
#import "Me.h"
@implementation Me
-(void)hungry{//饿了
[self.BoyFriend cook];
}
-(void)clothDirty{//衣服脏了
[self.BoyFriend washCloth];
}
-(void)makeMoney{
[self.BoyFriend makeMoney];
}//看着愉悦
-(void)lookHappy{
[self.BoyFriend faceBeautiful];
}
@end
LiuXianShen *boy = [[LiuXianShen alloc]init];
Me *zhaoJiaHui = [[Me alloc]init];
zhaoJiaHui.BoyFriend = boy;
//设置代理 LiuXianShen遵循MakeBoyFriend 协议 把boy赋值给右边的我表明boy已成了你的代理也就是说boy遵循MakeBoyFriend的协议 这个boy要为我服务
//协议MakeBoyFriend 遵循协议LiuXianShen 遵循协议的要为我服务
[zhaoJiaHui hungry];
[zhaoJiaHui clothDirty];
- 类目category 扩展extension 协议protocol
- 类目 Category Extension 协议 Protocol
- category extension protocol(类目,延展,协议)
- OC 类目category,延展extension,协议protocol
- OC_类目(Category)、延展(extension)、协议(Protocol)
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 一 )
- OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 二 )
- OC 类目(category) 延展(extension) 协议(protocol)
- Objective-C分类 (category),扩展(Extension)和协议(protocol)
- OC中的类别Category-协议Protocol-扩展Extension
- iOS杂记——category分类、extension扩展、protocol协议
- 01 类目Category、延展Extension、协议Protocol、计数器的使用NSTimer
- iOS复习 OC语言 类目Category/类扩展Extension
- day7: 类的扩展 NSDate NSDateFormatter Category Extension延展 Protocol协议 delegate代理
- Category、Extension、Protocol
- Category Extension protocol 总结
- 8、category、extension、protocol
- Category、Protocol、Extension
- 普林斯顿大学算法第一部分学习总结(Week4-Priority Queue)
- 关于java中getInstance()方法
- 常见的排序算法
- 欢迎使用CSDN-markdown编辑器
- 玩转mysql(入门级练习)
- 类目category 扩展extension 协议protocol
- Mina框架的简单例子
- Zend Studio中SVN的使用
- usaco.section1.4 && 1.5(2015.11.12)
- Java学习笔记(十一)多线程
- 数据结构和算法C语言实现:链表的实现(基于动态内存分配)
- CLRS第十五章思考题5-8
- swift 快速奔跑的兔几 本节的内容是:SceneKit COLLADA文件
- 查找最小的k个元素