【IOS学习】Objective-C 协议,以及demo

本文深入探讨了Objective-C协议在iOS开发中的作用,通过实例展示了如何使用协议来解耦代码,提高程序的可扩展性和复用性。重点介绍了协议的声明、实例、方法触发以及协议实现的基本步骤,提供了具体的代码示例和链接,帮助开发者更好地掌握这一关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

协议:类似于C++纯虚基类,提供方法,由其他类实现。

委托:类似于java的接口,接口定义了方法,由其他的类申明实现接口,并实现接口。
委托实际上是一个过程、一种实现方式,由另一个类来完成一个类的操作

可以参照此贴查看委托的另类实现
http://blog.youkuaiyun.com/zhuiyi316/article/details/7818149
但是可以看到那种实现是通过类作为另一个类的属性完成的

OC的协议实际上是为了解耦而产生的,目的就是为了让程序更加简单,容易扩充

@protocol textSendDelegate;
@interface NextVC : UIViewController
// 协议的实例
@property (nonatomic,assign)id<textSendDelegate> delegate;

@end

// 协议的声明
@protocol textSendDelegate <NSObject]]>
//一定要实现的
@required
-(void)textSend:(NSString *)textString;
//可选实现
@optional
-(void)logOfTextSend;
@end

// 协议方法的触发
if (self.delegate && [self.delegate respondsToSelector:@selector(textSend:)]) {
        [self.delegate textSend:_myTextField.text];
    }
    if (self.delegate && [self.delegate respondsToSelector:@selector(logOfTextSend)]) {
        [self.delegate logOfTextSend];
    }

// 申明协议实现
@interface RootVC : UIViewController<textSendDelegate>

//协议的绑定
    NextVC *next = [[NextVC alloc]init];
    next.delegate =self;


// 协议实现
-(void)textSend:(NSString *)textString
{
    self.displayLabel.text = textString;
}

-(void)logOfTextSend
{
    NSLog(@"a text is send to RootVC");
}

详细代码参照:https://github.com/caigee/iosdev_sample下的
DelegateSample


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值