jle*_*ehr 33
Objective-C中的动态类型意味着类型对象的类id在编译时是未知的,而是在将消息发送到对象时在运行时发现.例如,在以下代码中,在foo我们尝试发送消息之前,不知道类componentsSeparatedByString:.
id foo = @"One Two Three";
NSArray *a = [foo componentsSeparatedByString:@" "];
Run Code Online (Sandbox Code Playgroud)
如果不是使用id数据类型,我们已经完成了以下操作......
NSString *foo = @"One Two Three";
Run Code Online (Sandbox Code Playgroud)
...然后我们将使用静态类型而不是动态类型.
动态绑定意味着编译器不知道将选择哪个方法实现; 而是在发送消息时在运行时查找方法实现.它基本上帮助我们进行多态性.所以
[foo description]
Run Code Online (Sandbox Code Playgroud)
例如,如果foo是实例NSArray而不是实例,则会调用不同的方法实现NSString.
使用动态类型,您可以使用类型为id的变量来存储任何类型的对象.使用动态绑定,您可以执行此操作:id obj; [obj doWhatever];只要obj是实现-(void)doWhatever它的类型就可以使用.
| 归档时间: |
|
| 查看次数: |
9432 次 |
| 最近记录: |