协议 - ios 中protocol的问题,有点不是太明白,请教下。
巴扎黑
巴扎黑 2017-04-17 11:38:50
[iOS讨论组]

在一个User类中我定义了

@protocol User

//+$2+
//-$2-

@end

在别的类中我就可以这样写

NSMutableArray<User> *users;

这是什么原理?没有反倒资料啊。 还有个问题,不知道哪位大神是永RPC协议的

巴扎黑
巴扎黑

全部回复(2)
大家讲道理

因为Objective-C不像C或者Java那样有一份严格的语言标准定义,所以只能根据实际现象认为:这种声明变量的语法是合法的,但是实际使用中没有任何意义。这种语法就是声明一个类是遵循某种协议的语法,只不过我们通常是这样用的:

id<User> user;

你这里把id换成了NSMutableArray *,在语法上是合法的,也就是说编译器不会抱怨,但实际运行中,没有任何意义。users数组仍然可以接受任何对象,编译时不会产生警告,运行时也不会产生异常。这跟C++中的模版是两回事,虽然看起来有点像。

PHPz

Objective-C uses angle brackets to indicate conformance to a protocol.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号