(无码)常用的语法和设计模式

自动补全属性  点语法
设置私有属性(如果不想对外暴露私有属性,可以将其写在.m文件中)
方法写在@interface 类名()里面
(隐藏属性和方法声明)
@property NSString *name;//设置私有属性
@synthesize name = _name; //自动补全属性,可以省去get set方法   @end上面
字要实现set或者get方法中的任意一种,就可以调用点语法


协议
协议就是一组方法的声明,协议本身只创建方法,不实现方法

实际上就是:自己声明的方法不去实现,让别人获取你的协议,让他去帮你实现

声明协议
@protocol 协议名称<父协议>
声明协议方法
@required 方法名  必须实现的协议中的方法(默认)
@optional  可选的实现方法

@property id<协议名称>代理名

其他类导入协议头文件,在@interface 类名<协议名>   这就是在遵循协议
协议中声明的方法,类中无法声明

代理设计模式
协议在代理模式中,一般会写在协议制定方所在的类
代理设计模式:
类与类的通信是通过协议中的方法完成的,也就是协议方通过创建协议方法自己不去实现,而让别的类去实现这个方法

代理模式的例子:

//场景:Boss 开了一家公司,想找一个人(worker)买木头

Boss.h

@protocol BossDelegate<NSObject>

//代理需要实现的方法

- (void)buyWood;

- (void)designWebsite;

@end


@interface Boss : NSObject

//任意类型的对象都可以作为委托方的代理,只要遵守协议,实现协议中的方法即可

//声明属性设置代理(id)

//类型必须是id,并且必须遵循协议,名称一般就叫delegate

@property id<BossDelegate> delegate;

//boss自己的方法

- (void)sendCommand:(NSString *)command;


Boss.m

- (void)sendCommand:(NSString *)command{

NSLog(@"开会,我需要木头");

        //被动触发

        //代理者方法的调用,是由委托方决定的

        [_delegate buyWood];

}


Worker.h

#import "Boss.h"

//遵守代理

@interface Worker : NSObject<BossDelegate>

//自己的方法

- (void)sleep;


Worker.m

@implementation Worker

//实现代理方法

- (void)buyWood{

    NSLog(@"我帮Boss买木头");

}

//实现自己的方法

- (void)sleep{

    NSLog(@"我要去睡觉");

}


Main.m

        Boss * boss = [[Boss alloc]init];

        Worker * worker = [[Worker alloc]init];

        //设置代理(调用)

        //如果没有这句话就不知道谁遵守协议,也就没办法调用buyWood方法

        boss.delegate = worker;

//通过这个方法调用代理

        [boss sendCommand:@"买木头"];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值