objective-c-init与委托协议

objective-c-init与委托协议,第1张

概述每当我创建一个具有符合协议委托的init时,我将这样写入init: - (id)initWithDelegate:(id<ProtocolToConform>)delegate; 这样一来,如果创建对象不符合协议,我将会发出警告. 但是我注意到,即UIAlertView init方法如下所示: - (id)initWithTitle:(NSString *)title message:(NSSt 每当我创建一个具有符合协议的委托的init时,我将这样写入init:
- (ID)initWithDelegate:(ID<ProtocolToConform>)delegate;

这样一来,如果创建对象不符合协议,我将会发出警告.

但是我注意到,即UIAlertVIEw init方法如下所示:

- (ID)initWithTitle:(Nsstring *)Title message:(Nsstring *)message delegate:(ID)delegate cancelbuttonTitle:(Nsstring *)cancelbuttonTitle otherbuttonTitles:(Nsstring *)otherbuttonTitles,...

委托参数没有指定符合UIAlertVIEwDelegate协议?苹果为什么这样做的任何线索?

解决方法 我的理解是,API在几年前是一个很大的混乱,他们仍然在修复所有这些问题.

请注意,直到最近,许多协议是非正式的,几乎在API中的任何地方,您只能以代理身份找到代理.苹果正在每个版本中逐步修复它,例如正式的NSURLConnection代表随iOS 6.0一起提供.或者请注意,在iOS 6.1中,一些ID返回类型已更改为instancetype.

那么这是我的初始想法,检查头文件后:

@property(nonatomic,assign) ID /*<UIAlertVIEwDelegate>*/ delegate

很明显有人想将该协议添加到声明中,但只添加了注释.我猜测他们没有协议,没有兼容性.

总结

以上是内存溢出为你收集整理的objective-c-init与委托协议全部内容,希望文章能够帮你解决objective-c-init与委托协议所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存