OC - 类目、延展、协议
[类目]
在原有类的基础上添加方法,不可添加变量和属性,只添加方法。
1、类目创建
在.h文件中完成类目方法的声明:
#import <Foundation/Foundation.h>
//关键字 原有类名 (类目名)
@interface NSString (Sub)
//声明新的NSString方法 计算数字类型字符串差值(即声明新的 类的方法)
- (NSInteger)subStringWithOther:(NSString *)other;
@end
2、类目方法实现
在.m文件中完成类目方法实现
#import "NSString+Sub.h" //引用类目.h文件
@implementation NSString (Sub)
- (NSInteger)subStringWithOther:(NSString *)other { //实现新的NSString方法
NSInteger a = [self integerValue];
NSInteger b = [other integerValue];
return a - b;
}
@end
3、调用类目方法
#import <Foundation/Foundation.h>
#import "NSString+Sub.h" //引用类目.h文件
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"123"; //创建测试str1
NSString *str2 = @"456"; //创建测试str2
NSInteger result = [str1 subStringWithOther:str2]; //创建接收result
NSLog(@"%@ - %@ = %ld", str1 ,str2, result);
return 0;
}
[延展]
在类中添加私有方法、变量,仅该类可见。
1、延展创建与实现
在.m文件中创建私有变量和私有方法
私有变量在.m文件中全局访问,没有setter/getter方法,不对外公开
私有方法在.m文件中全局调用,不对外公开
#import "类名.h"
@interface 类名()
//声明私有变量、私有方法区域
@end
@implementation 类名
//实现类的方法和私有方法区域
@end
2、备注:延展变量和延展方法无法在.m文件中直接调用
[协议]
只声明,不实现,其他类实现的接口。
默认为@required //强制实现
@optional //选择实现
1、协议创建
协议只有.h文件,用于声明,不实现
@protocol 协议名 <类名>
@required //遵守协议后必须实现的方法和属性 默认值@required
@optional //选择执行的协议方法和属性
*相关扩展*
@dynamic //动态绑定属性
判断是否遵守协议以及实现方法
if(![实例变量 conformsToProtocol:@protocol(协议名)]) {
NSLog(@"没有遵守协议!");
}
if (![实例变量 respondsToSelector:@selector(方法)]) {
NSLog(@"没有实现方法!");
}
---恢复内容结束---
posted on 2015-07-02 19:24 summerpopo 阅读(165) 评论(0) 收藏 举报
浙公网安备 33010602011771号