标签:
分两部分:
1.系统已经写好的类目:按照功能对系统的类方法进行区分.
类目从@interface开始,后面是当前类名字,类名后是分类的功能, 到@end结束.
2.我们创建的类目,一般是为了把系统的类进行扩充.
对系统的类(例:NSString)添加文件Objective-C File {File:StringMethod; File Type:Category; Class: NSString}后,会自动出现@interface NSString (StringMethod).文件名为:NSString+StringMethod.
@interface NSString (StringMethod)
@end
为自己写的类添加类目.
延展以@interface开头,然后写当前延展的类名,类名后加一个(),到@end结束.
一般延展会写在自己写的类的.m文件中,把一些不想让外部调用的属性放在延展里,这样这条属性就只能在类的内部使用,外部使用不了,尽最大可能保护当前类的安全.
类目一般都是看不见.m的系统文件进行扩展,延展一般是针对自己的类进行操作.
类的.m文件:
// 这其中的name属性和create方法只能在自己类中使用.
@interface Student ()
@property(nonatomic, copy)NSString *name;
@end
@implementation Student
- (void)create{
_name = @"你好";
NSLog(@"%@",_name);
}
@end
#import <Foundation/Foundation.h>
// 1.声明一份协议
//@protocol 协议关键词
@protocol Marry <NSObject>
// 协议内容:
// 协议方法的声明:分两种
//若未写明@.... 则是必须实现的方法.
// @optional 是可选择的
@required
- (void)earnMoney;
@optional
- (void)cook;
@end
@interface Girl : NSObject
// 2.设置代理人的属性
@property(nonatomic,assign)id<Marry>delegate;
// 触发方法
- (void)getMarry;
@end
#import "Girl.h"
@implementation Girl
//两个人结婚之后,协议才正式的生效.
- (void)getMarry
{
//3. 让代理人去执行协议里的方法.
[self.delegate earnMoney];
}
@end
#import <Foundation/Foundation.h>
#import "Girl.h"
//4.引完头文件之后,boy需要签订协议
@interface Boy : NSObject<Marry>
@end
#import <Foundation/Foundation.h>
#import "Boy.h"
#import "Girl.h"
int main(int argc, const char * argv[]) {
// 创建两个小人
Boy *boy = [[Boy alloc] init];
Girl *girl = [[Girl alloc] init];
// 5.设置代理人
girl.delegate = boy;
//7. 通过调用结婚的方法,来执行协议里的方法.
[girl getMarry];
return 0;
}
#import "Boy.h"
@implementation Boy
//6.实现协议方法earnMoney
- (void)earnMoney{
NSLog(@"买买买");
}
@end
// 触发.
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/gao_zi/article/details/47058507