比方说 |
|
5分 |
A *a = (A*)b;
|
25分 |
在oc中协议不是类型,所以你不能使用协议来定义一个变量的类型。如这样定义一个协议类型 B_Protocol b; id<B_Protocol> delegate; 这里的id<B_Protocol> 表示实现了协议的对象。判断一个对象是否实现了某个协议可以通过如下代码来判断 [MyClass conformsToProtocol:@protocol(B_Protocol)]; |
那样的话,BMKPointAnnotation是实现了BMKAnnotation协议的,然后在 |
|
我试过了,跟直接A *a = b;没有区别,里面的各个属性保存的好像都是十六进制地址不是值。 |
|
10分 |
正式协议和非正式协议都不是OC对象,在OC里,协议是一种弱化的接口,不能直接用于声明
|
判断view.annotation 是不是BMKPointAnnotation 类型的对象 if ([view.annotation isKindOfClass:[BMKPointAnnotation class]]) { ///////....todo } |
|
那我要怎么做 |
|
if ([view.annotation isKindOfClass:[BMKPointAnnotation class]]) { BMKPointAnnotation *pointAnnotation = (BMKPointAnnotation *)view.annotation; } |