浅析object-c,swift "传值" 原理
2017-01-02 23:13
483 查看
1.object-c 的 代理protocol,以及block能传值的深层次的原因是:它们的申明和实现可以在两个不同的类进行,所以这就符合在不同的类中传值的要求。
(1)协议的拥有者,可以创建协议实例,也就是协议执行者比如tabeview.delegate = self; self为协议的执行者 ,tableview为协议的拥有者。协议方法在协议中申明而在协议拥有者中被协议执行者调用,协议方法在协议执行者众实现.
(2)block是同样的道理
2.那么swift中的代理和闭包能传值的深层次原因也是:它们的申明和实现可以在两个不同的类进行,所以这就符合在不同的类中传值的要求。
其实闭包以及block是函数的变体一样。
那么可以推断不管任何语言,在2个代码文件(class)中的传值,其实都是函数(闭包--swift?block--oc?钩子--c++?)的申明和实现可以放在不同class中。
(1)协议的拥有者,可以创建协议实例,也就是协议执行者比如tabeview.delegate = self; self为协议的执行者 ,tableview为协议的拥有者。协议方法在协议中申明而在协议拥有者中被协议执行者调用,协议方法在协议执行者众实现.
(2)block是同样的道理
2.那么swift中的代理和闭包能传值的深层次原因也是:它们的申明和实现可以在两个不同的类进行,所以这就符合在不同的类中传值的要求。
其实闭包以及block是函数的变体一样。
那么可以推断不管任何语言,在2个代码文件(class)中的传值,其实都是函数(闭包--swift?block--oc?钩子--c++?)的申明和实现可以放在不同class中。
相关文章推荐
- jquery提示 "object expected"的解决方法
- "Cannot identify object" QTP不能识别对象问题的解决方案
- XCode中互相包含引起的"property with 'retain(or strong)' attribute must be of object type"错误与解决
- "Swift"编程语言
- magento 第四章 出现 "Fatal error:Call to a member function load() on a non-object in \Abstract.php" 问题
- 浅析Java执行外部命令的几个要点(4)——支持shell的"|","`","*","?"等特殊符号
- 使用百度地图聚集marker时出现的"Object has no method removeEventListener"解决
- "The object cannot be deleted because it was not found in the ObjectStateManager."
- "Uncaught object angular.js:36"诡异错误
- "爱说说"技术原理方案的定选思考过程(一)
- "爱说说"技术原理:前端Javascript优化技巧(四)
- "爱说说"技术原理:前后台参数约定及逻辑代码(三)
- "爱说说"技术原理:前端Javascript优化技巧(四)
- "Sweeter Than Fiction" - Taylor Swift
- "爱说说"技术原理:与TXT交互及MDataTable对Json的功能扩展(二)
- "爱说说"技术原理:前后台参数约定及逻辑代码(三)
- Object中的equal()方法详细与"=="
- Erlang/OTP 17.0-rc1 新引入的"脏调度器"浅析
- 在后台对GameObject进行"创建"||"删除"动作