OC08 -- 类的类目 , 延展 , 协议

1 篇文章 0 订阅

类目

分两部分:
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

协议

1.在类的.m中声明协议@protocol,协议名为 类名+Delegate ,然后写协议内容(分 必须实行(@required)和选择实行(@optional));


#import <Foundation/Foundation.h>

// 1.声明一份协议
//@protocol 协议关键词

@protocol Marry <NSObject>

// 协议内容:
// 协议方法的声明:分两种
//若未写明@.... 则是必须实现的方法.
// @optional 是可选择的

@required
- (void)earnMoney;

@optional
- (void)cook;

@end

2.设置代理人属性:
在@interface …… : NSObject 中写
@property(nonatomic, assign)id <协议名>delegate;
// 写触发方法.

@interface Girl : NSObject

// 2.设置代理人的属性
@property(nonatomic,assign)id<Marry>delegate;

// 触发方法
- (void)getMarry;

@end

3.在类的.m中写代理人需要执行的内容.

#import "Girl.h"

@implementation Girl
//两个人结婚之后,协议才正式的生效.
- (void)getMarry
{
    //3. 让代理人去执行协议里的方法.
    [self.delegate earnMoney];
}

@end

4.在代理人.h中先引头文件,然后签订协议. NSObject<协议名>;


#import <Foundation/Foundation.h>

#import "Girl.h"

//4.引完头文件之后,boy需要签订协议
@interface Boy : NSObject<Marry>

@end

5.在main.m中确定代理人

#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;
}

6.在代理人.m中写协议中需要实施的方法内容.

#import "Boy.h"

@implementation Boy

//6.实现协议方法earnMoney
- (void)earnMoney{
    NSLog(@"买买买");
}

@end

// 触发.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值