• 关于 委托 的搜索结果

回答

来自@Jesse Rusak 的回答: Objective-C 委托就是已被指定为另一个委托的对象,没有特殊的创建过程,你只要定义一个实现你感兴趣的委托方法的类就可以。(虽然委托使用正式协议,但你必须得声明委托来执行该协议,如下所示)例如,假设你有个NSWindow。如果你想要实现他的委托的 windowDidMove: 方法,你可以创建一个这样的类: @implementation MyClass (void)windowDidMove:(NSNotification*)notification { // ... } @end然后创建一个MyClass的实例并制定为window的委托: MyClass *myDelegate = [[MyClass alloc] init];[window setDelegate: myDelegate];在NSWindow方面, 可能有类似于此的代码使用 respondsToSelector: 来看委托是否响应windowDidMove:信息,如何合适就发送。 if([[self delegate] respondsToSelector:@selector(windowDidMove:)]) { [[self delegate] windowDidMove:notification]; }委托资源本身是典型声明的weak(ARC)或assign(预ARC)来避免循环,因为对象委托经常持有强引用该对象(例如,一个视图控制器通常包含视图委托)要定义自己的委托,你需要在某个地方声明方法。有两个基本的方法,苹果的文档协议有讨论过. 1) 一个非正式的协议 这个就和NSWindow差不多,在NSObject的类别实现。例如,继续上面的例子,这是从NSWindow.h:转述的: @interface NSObject(NSWindowNotifications) (void)windowDidMove:(NSNotification *)notification;// ... 其他方法 @end就像上面描述的那样,当调用这个函数的时候,你会使用-respondsToSelector:,委托简单的实现此方法,就完成了。这个方法在苹果的库里是直接常见的,但是新的代码应该是用下面的更现代的方法。 2)一个正式的协议 新的选择是声明一个正式的协议。声明应该像这个样子: @protocol NSWindowNotifications @optional (void)windowDidMove:(NSNotification *)notification;// ...其他方法 @end这类似于一个借口或者抽象基类,因为这为委托建立了一个特殊的类型,这种情况下是NSWindowNotifications。委托执行者应该采用这个协议: @interface MyDelegate // ...@end然后再协议中执行方法。对于诸如@optional(就和大多数委托方法一样)在协议中声明的方法,你仍然需要在调用特殊方法之前检查-respondsToSelector:。苹果建议这种方法,因为这个更精确,不会和NSObject弄混,并且提供更好的工具支持。 优化速度 代替检查委托是否响应选择器,你可以在设置委托时存储相关信息。使用bitfield是一个非常清晰的方法,如下: @protocol SomethingDelegate @optional (void)something:(id)something didFinishLoadingItem:(id)item; (void)something:(id)something didFailWithError:(NSError *)error;@end @interface Something : NSObject@property (nonatomic, weak) id delegate;@end @implementation Something { struct { unsigned int didFinishLoadingItem:1; unsigned int didFailWithError:1; } delegateRespondsTo;}@synthesize delegate; (void)setDelegate:(id )aDelegate {if (delegate != aDelegate) { delegate = aDelegate;delegateRespondsTo.didFinishLoadingItem = [delegate respondsToSelector:@selector(something:didFinishLoadingItem:)]; delegateRespondsTo.didFailWithError = [delegate respondsToSelector:@selector(something:didFailWithError:)];} }@end然后,在正文里,可以通过访问delegateRespondsTo来检查委托处理邮件,而不是一遍又一遍的发送-respondsToSelector:。 来自@Tibidabo 上面的方法很厉害!但是如果你想在1分钟之内解决问题可以尝试一下这个:MyClass.h文件应该像这个样子(用评论添加委托行) import @class MyClass; //定义类,这样协议可以看到MyClass@protocol MyClassDelegate //定义委托协议 (void) myClassDelegateMethod: (MyClass *) sender; //定义在另一个类里实现的委托方法@end //结束协议 @interface MyClass : NSObject {}@property (nonatomic, weak) id delegate; //定义 MyClassDelegate为委托 @endMyClass.m 文件应该像这样: import "MyClass.h" @implementation MyClass @synthesize delegate; //综合MyClassDelegate 委托 (void) myMethodToDoStuff {[self.delegate myClassDelegateMethod:self]; //这个会调用在其他类里实现的方法 } @end为了在其他的类里使用委托(本情况是UIViewController调用MyVC)MyVC.h: import "MyClass.h" @interface MyVC:UIViewController { //make it a delegate for MyClassDelegate}MyVC.m: myClass.delegate = self; //设置委托至自身的某个地方执行委托方法: (void) myClassDelegateMethod: (MyClass *) sender { NSLog(@"Delegates are great!"); } 来自@umop 当用正式的协议方法创建委托支持时,我发现可以确保正确的类型检查(虽然是运行时间,不是编译时间),通过添加如下代码: if (![delegate conformsToProtocol:@protocol(MyDelegate)]) { [NSException raise:@"MyDelegate Exception" format:@"Parameter does not conform to MyDelegate protocol at line %d", (int)__LINE__]; }在你的委托访问(setDelegate)代码,这个能将错误最小化。 来自@Tom Andersen的回答 或许更多的是在于你所缺少的行。如果从C++的视角来看,委托需要一点时间适应,但是基本上“他们只是工作”。委托实现的方式是:设置NSWindow的委托对象,但是对象只为一个或几个可能的委托方法执行。所以会发生一些事,NSWindow想要调用对象,它只使用Objective-c的respondsToSelector方法来决定对象是否被调用,然后再调用。这就是objective-c的实现方式——根据需求寻找方法。用你自己的对象实现这一点是非常琐碎的,没有什么特别的事情,你甚至可以为让一个实例有27个对象的NSArray,完全不同类型的对象,其中只有18个有-(void)setToBue;方法,其他的9个没有。所以在18个需要完成的调用setToBlue,就像这样: for (id anObject in myArray){ if ([anObject respondsToSelector:@selector(@"setToBlue")]) [anObject setToBlue]; }另外,委托是不保留的,所以需要在MyClass dealloc方法中将委托设置为nil。 来自@RDC 的回答: 请看下面的教程是如何一步一步介绍iOS中的委托的。 iOS中的委托我创建了两个 ViewControllers (从一个给另一个发送) FirstViewController 执行委托(提供数据). SecondViewController声明委托(接收数据).

a123456678 2019-12-02 03:13:13 0 浏览量 回答数 0

问题

商标注册上传单次委托书时,提交的键显示灰色

游客o2oypdrip4api 2019-12-01 19:59:45 3 浏览量 回答数 0

问题

备案 网站负责人

1827512881656474 2019-12-01 19:14:03 325 浏览量 回答数 1

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

回答

有三种退款可能:委托购买期间没有购买到合适域名,或只购买到部分域名,当委托购买规则到期后,未消耗的冻结款项会通过支付宝完成退款。委托购买规则未到期,但已经成功购买,如果有未消耗的冻结款项会通过支付宝完成退款。委托购买规则未到期,用户主动删除规则后,冻结款会自动退还。

大财主 2019-12-02 00:39:38 0 浏览量 回答数 0

问题

请问网站负责人委托书怎么上传?

祥雨梦殇 2019-12-01 21:26:17 3833 浏览量 回答数 1

问题

主体负责人不是法定代表人,需提供法人授权委托书原件一份,上传至备案系统中,然而没有上传入口

游客6oae47abapx7q 2019-12-01 19:24:34 61 浏览量 回答数 1

问题

网站负责人委托书在哪里提交

fvf 2019-12-01 19:24:40 2803 浏览量 回答数 1

问题

短信服务的授权委托书如何填写?

圣飞捷 2019-12-01 19:14:21 164 浏览量 回答数 1

问题

请问网站负责人委托书怎么上传?

祥雨梦殇 2019-12-01 21:26:18 3758 浏览量 回答数 1

问题

阿里云消息中间件自动拉消息,时间一长会报错

刘邦 2019-12-01 19:43:29 1655 浏览量 回答数 0

回答

引用楼主祥雨梦殇于2016-10-21 16:54发表的 请问网站负责人委托书怎么上传? : 请问网站负责人委托书怎么上传? 因为网站主体和网站负责人不是同一个人,所以现在准备好了网站负责人委托书,请问如何上传,好像没有专门显示上传网站负责人委托书的地方,急求! [url=https://bbs.aliyun.com/job.php?action=topost&tid=297445&pid=tpc][/url] 亲,提供一下备案订单号,帮亲看看。

备案服务 2019-12-02 02:18:40 0 浏览量 回答数 0

问题

短信模板审核失败怎么提供授权委托书

1557209617367646 2019-12-01 19:04:56 693 浏览量 回答数 2

回答

其实这种可以有现成的插件来完成比如这个另外回答你的问题: 只要有鼠标滚动就会触发该js并计算是不是符合条件,从网页优化的角度来说肯定不是很好的解决方案 ?就目前来说,除了这一种方式,也想不出更好的办法来。其实开发中很多事件也是这种方式。比如事件委托。当我们将事件委托在 document 上的时候,委托在任何非直接事件触发元素时都是类似的一个机制。

杨冬芳 2019-12-02 02:52:19 0 浏览量 回答数 0

问题

事件委托是什么

茶什i 2019-12-01 22:01:03 12 浏览量 回答数 1

问题

java里为什么没有委托

云计算小粉 2019-12-01 19:56:31 780 浏览量 回答数 1

问题

什么是域名委托购买?

行者武松 2019-12-01 19:36:01 2276 浏览量 回答数 2

问题

系统提示需要提供委托书,请问有没委托书格式

2019-12-01 18:43:48 199 浏览量 回答数 1

问题

域名委托购买需要冻结款项?

行者武松 2019-12-01 19:36:01 936 浏览量 回答数 2

问题

网站责任人委托书怎么填写

磊21231 2019-12-01 20:21:09 2393 浏览量 回答数 2

问题

事件委托是什么?

剑曼红尘 2020-04-03 15:23:22 3 浏览量 回答数 2

问题

域名委托购买会有哪些通知?

行者武松 2019-12-01 19:36:03 783 浏览量 回答数 1

问题

房产委托公证书样本 出生公证书样本 房屋买卖授权委托公证书样本

尽忠职守 2019-12-01 21:09:49 4257 浏览量 回答数 0

问题

请问下这个授权委托书上传的入口在哪里,委托书有模板吗

2019-12-01 18:43:47 474 浏览量 回答数 1

问题

短信产品申请签名-授权书问题

1166845995569183 2019-12-01 19:12:41 86 浏览量 回答数 1

问题

域名委托购买的规则是怎么样的?

行者武松 2019-12-01 19:36:02 1278 浏览量 回答数 1

问题

域名委托购买,自动购买哪类域名?

行者武松 2019-12-01 19:36:01 723 浏览量 回答数 1

问题

域名委托购买成功的域名可以退款吗?

行者武松 2019-12-01 19:36:03 918 浏览量 回答数 1

问题

域名委托购买存在几种冻结款退款可能?

行者武松 2019-12-01 19:36:02 777 浏览量 回答数 1

问题

域名委托购买规则有效期有多长时间?

行者武松 2019-12-01 19:36:03 865 浏览量 回答数 1

问题

域名委托购买,冻结款什么时候可以退还?

行者武松 2019-12-01 19:36:02 742 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播