OC 代理 协议 委托 数据源的概念

USB设备识别码VID和PID详解:如何查询和自定义你的设备ID 本文详细解析了USB设备识别码VID和PID的核心作用、查询方法及自定义配置技巧。VID(供应商识别码)和PID(产品识别码)是USB设备的唯一身份证,用于驱动匹配和功能识别。文章提供了Windows和Linux系统下的查询方法,并探讨了如何合法获取和自定义VID/PID,适合硬件开发者和DIY爱好者参考。 阅读详情

转载自http://www.devdiv.com/home.php?mod=space&uid=12744&do=blog&id=6075


OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 );


数据源就是对象遵循了存储数据的协议,可以存储使用数据 

 

协议表示了方法可以被任何类所实现。协议本身不是类。他们只是简单定义了一个其他对象可以实现的接口。当你的类实现了协议中的某个方法的时候也就是说你的类实现了那个协议。


Objective-C的另一个扩展称为协议,它非常象Java中的接口。两者都是通过一个简单的方法声明列表发布一个接口,任何类都可以选择实现。协议中的方法通过其它类实例发送的消息来进行调用。


iPhone程序开发里,object-c里的delegate怎么理解?
答:设置代理
然后就可以实现协议了。
相当于C++里实现一个接口,或Java里实现一个抽象类里的抽象方法。
有些类里不仅可以设置代理,还可以为其设置数据源(比如一些模态窗口UIActionSheet之类的)。

有很多时候是需要在B类口中来完成一些对A类的操作, 这时就需要A设个代理让B来完成了,这个在应用中很常见也很实用。

 

来源地址http://www.cocoachina.com/bbs/read.php?tid-26591.html

iphone开发重要基础知识------委托代理(degegate)
委托代理(degegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。委托机制在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍。
  那么在苹果开发过程中,用到委托的程序实现思想如下,我主要拿如何在视图之间传输信息做个例子。譬如:在两个页面(UIIview视 图对象)实现传值,用委托(delegate)可以很好做到。
方法:
@interface A:UIView
id transparendValueDelegate;
@property(nomatic, retain) id transparendValueDelegate;
@end
@implemtion A
@synthesize transparendValueDelegate

-(void)Function
{ 
NSString* value = @"hello";
[transparendValueDelegate transparendValue: value];
}
@end

类B
@interface B:UIView
NSString* value;
@end
@implemtion B
-(void)transparendValue:(NSString*)fromValue
{
value = fromValue;
NSLog(@"the value is %@ ",value); 
}
@end

// 下面的设置A代理委托对象为B
//在定义A和B类对象处:
A* a = [[A alloc] init];
B* b = [[B alloc] init];
a. transparendValueDelegate = b;//设置A代理委托对象为B
这样 在视图A和B之间可以通过委托来传值了。

下面这个例子委托有两类:
1、一个视图类对象的代理对象为父视图,子视图用代理实 现让父视图显示别的子视图
2、同一父视图下的一个子视图为另一个子视图的代理对象,让另一个子视图改变自身背景色为给定的颜色


代理,解决了C++中,动不动就要继承等等,实现个协议就ok了。
比如mfc中,每一个程序都要继承自CWinApp无非就是要重写那几个虚函数,不觉得麻烦嘛?
所以啊,在cocoa里面,就实现个UIApplicationDelegate代理,不用继承。只需要关心
你要捕获的应用程序生命周期中的事件(函数)就可。 

代理就是一个引用指针,比方类a中有一个类b得指针,则b就是a得代理,a得代理就是b,那么a干完一件事情得时候告诉b,让b调用对应得方法来做响应。。这就是代理

协议(Protocol)的用法和代码例子

协议,是通过网络,计算机使用者进行通讯后,互相进行约定规定的集合。两个类进行通讯,用协议就比较方便。下面是 CocoaChina 版主“angellixf”为新手写的协议入门介绍以及代码例子,希望对刚入门开发者有所帮助
一、说明
  1.协议声明了可以被任何类实现的方法
  2.协议不是类,它是定义了一个其他对象可以实现的接口
  3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议。
  4.协议经常用来实现委托对象。一个委托对象是一种用来协同或者代表其他对象的特殊对象。
  5:委托,就是调用自己定义方法,别的类来实现。
  6.新特性说明
    @optional预编译指令:表示可以选择实现的方法
    @required预编译指令:表示必须强制实现的方法

二、定义

.h
@protocol ContactCtrlDelegate
-(void)DismissContactsCtrl;
@end

@interface ContactsCtrl : UIViewController {
    id <ContactCtrlDelegate> delegate;
}
@property (nonatomic, assign) id <ContactCtrlDelegate> delegate;


.m
@synthesize delegate;


三、例子

例如:UITextView
@protocol UITextViewDelegate <NSObject>

@optional

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
- (BOOL)textViewShouldEndEditing:(UITextView *)textView;

- (void)textViewDidBeginEditing:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;

- (void)textViewDidChangeSelection:(UITextView *)textView;

@end

  如果要调用以上这些方法,就必须设置UITextView的委托:TextView.delegate = self;


四、Demo

1、ContactsCtrl.h

#import <UIKit/UIKit.h>

//定义协议
@protocol ContactCtrlDelegate
-(void)DismissContactsCtrl;
@end


@interface ContactsCtrl : UIViewController {
    IBOutlet UINavigationBar *ContactNavBar;
    id <ContactCtrlDelegate> delegate;
}
@property (nonatomic, assign) id <ContactCtrlDelegate> delegate;


-(IBAction)canCelBtn:(id)sender;
@end


2、ContactsCtrl.m

@implementation ContactsCtrl
@synthesize delegate;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    ContactNavBar.topItem.prompt = @"选取联系人发送短信";
}


//调用协议中的方法
-(IBAction)canCelBtn:(id)sender{
    [delegate DismissContactsCtrl];
}


3、ProtocolDemoCtrl.h

#import <UIKit/UIKit.h>
#import "ContactsCtrl.h"
@interface ProtocolDemoCtrl : UIViewController <ContactCtrlDelegate>{//添加委托
    ContactsCtrl *contactsView;
}


4、ProtocolDemoCtrl.m

#import "ProtocolDemoCtrl.h"
#define BARBUTTONADD(SELECTOR) [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:SELECTOR] autorelease];

@implementation ProtocolDemoCtrl
@synthesize contactsView;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.rightBarButtonItem = BARBUTTONADD(@selector(addContactAction:));
}


- (void)addContactAction:(id)sender{
    ContactsCtrl *contactView = [[ContactsCtrl alloc] initWithNibName:@"ContactsCtrl" bundle:nil];
    self.contactsView = contactView;
    contactsView.delegate = self;//设置委托
    [self presentModalViewController:contactsView animated:YES];
    [contactView release];    
}


//实现ContactCtrlDelegate协议中的方法
-(void)DismissContactsCtrl{
    [contactsView dismissModalViewControllerAnimated:YES];
}



具体看下Demo的实现哈,还有有时间可以看看Objective-c基础教程2.0这本书。(新手注意)

采用某个协议 相当于给阅读类声明的编程人员发送一条消息,表明我们啊可以用他完成两件事情,啥呢
1、对自身编码和解码
2、能够复制自身

如果你没定义 那你第四步的func就是自己的方法 而不是协议中的了

而且协议又没说你必须实现方法了 你也知道协议分为正式协议和非正式协议,正式的采用实现方法



WorkBuddy KiCad 实战:国产 AI 搭子不只会写代码,传感器板从零走到可审查 真正可用的 PCB 教程不能承诺“一键打样”。本课把 WorkBuddy 放在需求拆分、文件生成和审查记录的位置,KiCad 负责 ERC、DRC 与制造文件,工程师负责最终判断。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、KiCad 8.0、Python 3.11 与人工审阅组成一条可复现链路。你会从“已确认的接口表、器件库来源、板框与电源方案”出发,得到“KiCad 工程、原理图、初始 BOM、ERC 报告与审查记录”,并学会用真实命令、错误信号和停止条件判断成果能不能进入下一阶 阅读详情

相关推荐

等时替代模型( Isotemporal Substitution Model)

文献阅读:Associations of sedentary time and physical activity with adverse health conditions: Outcome-wide analyses using isotemporal substitution model(该论文于2022年4月28日发表在柳叶刀子刊 EClinicalMedicine 上)

姚巨龙的博客 1万+

Object C学习笔记16-委托(delegate)

  在.NET中都知道委托(delegate),通俗点的解释就是可以将方法作为一个参数传到另外一个方法中使用。   委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。在Object C中也同样存在委托的概念,但是委托一般与协议(Protocol)同时使用,而且和.NET中的委托稍有区别     一. 定义...

weixin_34194551的博客 216

数据分析项目:直播电商用户流失分析

其中,'Tenure'(在网时长)可能是影响用户流失的关键因素,意味着用户在平台上的停留时间越长,流失的可能性可能越低,这提示平台应注重提高用户粘性,增加用户在平台上的活跃度和停留时间。)的分析,挖掘用户流失的原因和模式,分析发现用户投诉处理效率(Complain)、距上次消费时长(DaySinceLastOrder)、会员生命周期(Tenure)等8项核心指标对流失预测贡献度达87%,模型准确率94.58%,并提出相应的建议。重视用户的满意度,及时处理用户的投诉和反馈,不断改进平台的服务和功能。

Nervousr的博客 2459

关于OC中的委托

OC中的委托(Delegation)使用委托:可以看成是一个类中声明了一个protocol,另外一个类作为委托来实现这个protocol内的方法。比如当在iPhone中创建一个表时,需要使用UITableView类。但是这个类不知道表的标题,也不知道有多少的部分或行需要显示,也不知道表中每行或每个单元格中应该显示什么内容。所以它将这一系列的工作委托给你,利用定义的一个协议:UITableViewDa

Ray的博客 1769

Word论文插入带有方括号序号的参考文献——尾注+交叉引用

文章目录1. 尾注功能2. 为参考文献的序号添加方括号3. 调整参考文献前的序号大小4. 重复引用同一参考文献5. 将交叉引用的序号改为带有方括号的上标序号格式6. 删除参考文献前的尾注横线 1. 尾注功能 首先使用尾注功能顺序插入参考文献,暂时不考虑方括号问题,具体操作如下: ① 将光标放在需要插入参考文献角标的地方 ② 在word菜单栏,“引用-脚注部分右下角箭头”(用来设置尾注格式) ③如...

Your_Raymond的博客 9万+

systermverilog中for循环中的fork join执行情况分析

仅为本人学习记录,如有错误感谢指正!

qq_63807221的博客 1461

Objective-C的委托(Delegate)

要实现委托效果,在Objective-C中最要的是,类必须遵循某个正式或非正式的协议,然后把自己的self指针指派给委托。

痴_Pro的博客 2796

游戏大厂状态同步与帧同步技术全解析——让虚拟世界万物协同的“时间齿轮”

本文深入解析了大厂游戏开发中的两种核心同步技术:状态同步和帧同步。状态同步适合大型MMO和FPS游戏,由服务端计算并广播世界状态;帧同步则通过统一操作输入实现MOBA和RTS游戏的绝对公平。文章详细比较了两者的差异、适用场景和底层实现原理,并揭秘了《王者荣耀》《PUBG》等热门游戏的同步机制。同时探讨了本地预测、延迟补偿、防作弊等关键技术,以及未来AI和云游戏带来的同步新挑战,为开发者提供了全面的技术参考和实践指南。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 919

Java设计模式(5):代理模式

定义 为其他对象提供一种代理以控制这个对象的访问。 代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。 为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。 在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。 代理模式...

qq_36699930的博客 1048

XILINX RFSoC全面解析(五)—— Zynq UItrascale+ RF Data Converter IP核详解

这期我们来看看RFSoC独有的IP核——Zynq UItrascale+ RF Data Converter如何使用。 我使用的VIVADO版本是2018.3,这个是最低版本,要开发RFSoC,VIVADO版本必须不低于2018.3。 另外电脑配置也需要很高,64位,8核@3.4GHz CPU,16GB内存,固态硬盘基本就是低配,跑起来很勉强。建议有条件的朋友使用工作站或者服务器。 首先在VIVADO中新建一个工程,因为我使用的是xilinx官方的开发板,所以可以直接设定选board就行。 在I

1万+

海思Hi3519A开发:DSP开发指南

通过创建DSP项目、实现算法、编译调试等步骤,开发者可以充分利用Hi3519A芯片集成的DSP,实现各种音视频处理功能。通过以上示例,我们可以看到在Hi3519A开发平台上进行DSP开发是一项强大而灵活的任务。在调试过程中,可以使用调试工具提供的功能,如断点设置、变量查看等,以便更好地理解和优化DSP算法的执行过程。在Hi3519A开发平台上,我们可以利用DSP的高性能计算能力来加速这些算法的执行。在实际的DSP开发中,算法的实现可能更加复杂,需要结合具体的项目需求进行。3.2 DSP算法实现。

QoTypescript的博客 1494

OC设计模式之代理(委托)设计模式

作为一种面向对象类型的语言,OC中也有各种设计模式的体现,这里讲到的是代理(委托)设计模式。 首先我们来理解一下什么是委托设计模式,       1.委托(delegate)也叫代理,是iOS开发中常用的设计模式。     2.代理模式是一种简单而功能强大的设计模式,这种模式用于一个对象“代表”另外一个对象和程序中其他的对象进行交互。      3.主对象(这里指的

梧雨北辰的博客 2303

【AI智能体】最强AI编程利器 Claude Code 从部署到项目实战详解

最强AI编程利器 Claude Code 从部署到项目实战详解

congge 4510

OC :代理 协议 委托 数据源的概念

(网摘) OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 ); 数据源就是对象遵循了存储数据的协议,可以存储使用数据    协议表示了方法可以被任何类所实现。协议本身不是类。他们只是简单定义了一个其他对象可以实现的接口。当你的类实现了协议中的某个方法的时候也就是说你的类实现了那个协议。

812

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OC 代理 协议 委托 数据源的概念-转载

概念很重要。要仔细理解 OC 代理 协议 委托 数据源的概念 OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 ); 数据源就是对象遵循了存储数据的协议,可以存储使用数据    协议表示了方法可以被任何类所实现。协议本身不是类。他们只是简单定义了一个其他对象可以实现的接口。当你的类实现了协议中的某个方

fang8380的专栏 625

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OC协议应用之代理者模式

1、代理简介:代理就是委托别的对象为自己做事情,首先此对象要给别的对象发送消息,即调用别的对象中的成员方法,别的对象根据此对象发送的消息处理后返回一个处理结果给此对象即消息反馈。 2、代理类的执行过程 (1)一般情况下:一个类委托别的类为自己做事情,是直接将代理类的对象作为自身成员(直接用@property为其设置set/get方法),然后在自己的成员方法中直接调用代理类的成员方法进行实现。

785

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

object—c 代理 协议 委托 数据源 概念

OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似); 数据源就是对象遵循了存储数据的协议,可以存储使用数据    协议表示了方法可以被任何类所实现。协议本身不是类。他们只是简单定义了一个其他对象可以实现的接口。当你的类实现了协议中的某个方法的时候也就是说你的类实现了那个协议。 Objec

Miracle_包子 792

在Objective-C中利用协议实现委托和数据源模式,并提供一项优化技术

协议是什么? Objectiv-C语言有一项特性叫做"协议",我们可以把某个类应该实现的一系列方法定义在协议里面。理解并善用协议可令代码变得更易维护,因为协议这种方式能很好地描述接口。 委托是什么? oc广泛使用一种名叫"委托模式"的编程设计模式来实现对象间的通信,该模式的主旨是:定义一套接口,某对象若想接受另一个对象的委托,则需遵从此接口,以便成为其"委托对象"。而这"另一个对象"则可以给其委托对象回传一些消息,也可以在发生相关事件时通知委托对象。 此模式可将数据与业务逻辑解耦。比方说,...

run_in_road的博客 262

关于OC的协议和委托,转载一篇博文

在Object-C中,委托和数据源都是由协议实现的。协议定义了一个类与另一个类进行沟通的先验方式。 它们包含一个方法列表,有些是必须被实现的,有些是可选的。 任何实现了必需方法的类都被认为符合协议。 1、定义协议 定义协议的方式与定义类的类的方式非常相似。 @protocol MyProtocol        - (void)firstMethod;   

wzf345182479的专栏 374

iOS——协议与分类

在OC语言中有一项特性叫做协议(protocol),由于OC不支持多重继承,因而我们把某个类应该实现的一系列方法定义在协议里。协议可以很好的描述接口。 ** 分类(Category)**也是OC的一种重要特性,利用分类可以直接为当前类添加方法,无需通过继承子类,契合OC语言运行期系统是高度动态的。 23:通过委托与数据源协议进行对象间通信 对象之间经常需要相互通信,而通信方式有很多种。Objective-C开发者广泛使用一种名叫"委托模式"(Delegate pattern)的编程设计模式来实现对象间的通信

chabuduoxs的博客 913

OC-协议

协议(Protocol)是多个类共享的一个方法列表,在协议中列出的方法,在定义协议的类中并没有给出具体的实现,而协议的实现的功能是在遵守协议的类中定义的。通过协议可以实现对象之间的通信,同时又能够使类的定义更加通用。也就是说,遵守同一协议的类,针对协议中定义的方法,可以在类中实现不同的功能。例如,当一个视图View类的对象被单击时,在不同的控制器Controller类中可以定义不同的响应方法。 1.为什么需要协议 协议用来解决对象之间通信问题,特别是当视图类对象向控制器类对象通信(发送用户点击动作、请求

qq_32619837的博客 358

谈谈Objective-C中的协议

协议简述 协议(protocol)是oc中的一个重要的语言特性,协议中定义了一些方法,若某个类想要实现这个协议中的一系列方法,则必须遵守这个协议,这个类对象被称为"委托对象" , 即为"代理"。这也说明这种模式是单向的,消息的发送方(委托方) 需要知道接收方(代理方)是谁,即只需要知道它的代理方是否遵守了协议( protocol)反过来是不需要的。 协议的两种模式 这两种模式分别为委托模式(de...

weixin_34377919的博客 156
上一篇: UIToolBar 工具条 添加各种各样的 UIBbarButtonItem
下一篇: UITextField+总结
getengwork
博客等级 码龄15年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值