objective-c protocol delegate
protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
当一个A view 里面包含了B view
b view需要修改a view界面,那么这个时候就需要用到委托了。
需要几个步骤
1。首先定一个协议
2。a view实现协议中的方法
3。b view设置一个委托变量
4。把b view的委托变量设置成a view,意思就是 ,b view委托a view办事情。
5。事件发生后,用委托变量调用a view中的协议方法
例子:
B_View.h:
@protocol UIBViewDelegate <NSObject>
@optional
- (void)ontouch:(UIScrollView *)scrollView; //声明协议方法
@end
@interface BView : UIScrollView<UIScrollViewDelegate>
{
id< UIBViewDelegate > _touchdelegate; //设置委托变量
}
@property(nonatomic,assign) id< UIBViewDelegate > _touchdelegate;
@end
B_View.mm:
@synthesize _touchdelegate;
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
_touchdelegate=nil;
}
return self;
}
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
[super touchesBegan:touches withEvent:event];
if(_touchdelegate!=nil && [_touchdelegate respondsToSelector: @selector(ontouch:) ] == true)
[_touchdelegate ontouch:self]; //调用协议委托
}
@end
A_View.h:
@interface AViewController : UIViewController < UIBViewDelegate >
{
BView *m_BView;
}
@end
A_View.mm:
- (void)viewWillAppear:(BOOL)animated
{
m_BView._touchdelegate = self; //设置委托
[self.view addSubview: m_BView];
}
- (void)ontouch:(UIScrollView *)scrollView
{
//实现协议
}
分享到:
相关推荐
使用场景及目标:适用于学习 Objective-C 中协议与委托的具体实现及其在 iOS 开发中的应用,提升代码的解耦性和复用性,优化应用架构。 其他说明:文章不仅涵盖了理论知识,还通过具体示例展示了如何在实际项目中...
在iOS开发中,协议(Protocol)和代理(Delegate)是两个至关重要的概念,它们构成了对象间通信的基础。...通过"iOS 代理详解Demo"的学习,开发者可以更好地掌握如何运用这些机制来构建高效、可扩展的应用程序。
掌握协议和委托机制有助于我们理解如何在iOS应用中实现组件间的交互。 7. **单元测试与持续集成**:高质量的开源项目通常会包含单元测试,以确保代码的稳定性和可靠性。我们可以通过查看源代码中的测试用例,了解...
但这些功能的使用相对较少,且更复杂,需要深入理解iOS的事件传递机制和音频框架。 总之,UIApplication是iOS开发中的关键组件,它协调和管理着应用程序的各个方面,为开发者提供了与系统的接口,以实现各种功能和...
总的来说,iOS代理是实现对象间通信的关键机制,理解并熟练运用代理能够帮助开发者更好地构建健壮且可维护的iOS应用程序。在实际开发中,应根据项目需求合理选择代理、Block还是Closure,以实现最佳的设计。
在iOS开发中,UITableView是展示列表数据的重要组件,而UITableViewCell则是构成TableView的单元格,...无论是通过tag值还是委托机制,都能够灵活地实现功能需求。在实际开发中,应根据项目的具体需求选择合适的方式。
《斯坦福大学iOS 5应用开发课程源码详解》 斯坦福大学的iOS 5应用开发课程是2011年秋季推出的免费教学资源,旨在为开发者提供深入学习iOS平台编程的专业指导。这个课程的源码是理解iOS应用开发的重要实践材料,涵盖...
5. **事件和委托**:C#中的事件和委托机制实现了基于发布/订阅模式的通信,常用于UI编程。 6. **LINQ(Language Integrated Query)**:内置于C#的查询语言,使得数据库操作更加简洁高效。 7. **异步编程**:利用...
总结,DelegateTestDemo.zip项目为我们提供了一个直观的iOS委托模式学习案例。通过实际操作和分析项目代码,我们可以更深入地理解和应用这一关键的设计模式,提升我们的iOS开发能力。在实际开发中,熟练掌握委托模式...
**CKTextField iOS源代码详解** 在iOS开发中,UI界面的构建是至关重要的,而文本输入框(UITextField)是用户交互的重要组成部分。CKTextField是由Christian Kienle开发的一个开源库,它扩展了苹果原生的...
### IOS开发基本知识详解 #### 一、Objective C入门概览 Objective-C是一种结合了C语言特性和面向对象编程(OOP)能力的编程语言。它最初由Brad Cox和Tom Love在1983年设计,并在苹果公司的Mac OS X和iOS操作系统中...
此外,通过委托(delegate)机制,我们可以实现chart和tableView之间的通信,确保点击事件的响应和反馈一致。 4. **自定义交互** 为了实现更复杂的交互,开发者可能需要扩展PNChart的源代码,例如添加新的委托方法...
### iOS面试核心知识点详解 #### 一、Objective-C的继承与多态机制 **多继承替代方案:协议委托代理** Objective-C不支持传统的多继承,而是通过`protocol`(协议)和`delegate`(委托)模式来实现类似的功能。这...
### iOS基础开发面试题知识点详解 #### 1. Object-C 是什么? - **定义**:Objective-C是一种通用、面向对象的编程语言,它在C语言的基础上增加了面向对象的功能。它是苹果公司开发iOS和macOS应用的主要语言之一。...
### iOS面试题详解 #### 一、Objective-C的多继承与替代方案 **问题:**Objective-C支持多继承吗?如果不支持,那如何实现类似功能? **解答:**Objective-C实际上并不支持传统的多继承,即一个类直接继承自多个...
ARC的核心机制是自动插入内存管理的方法。例如,当代码中创建了一个对象,ARC会自动在对象不再被使用时插入release方法,防止内存泄漏。同样,当对象被复制或需要持续存在时,ARC会插入retain方法来增加对象的引用...
- **Delegate机制**:通过将数据(即笑脸的状态)委托给其他对象来实现数据和视图的解耦。这种方式使得`FaceView`可以专注于界面展示而无需处理具体的数据逻辑。 - **代码示例**:在课程中展示了如何设置`FaceView`...