一旦我的第一个视图加载我的位置控制器调用-(void)locationFound
到它的委托,即[UIApplication sharedApplication].delegate
(我的 AppDelegate),我就有一个相应的协议,它只要求一个所需的方法 locationFound。
我在我的 AppDelegate 标头中声明了一个协议遵守:
@interface ProgramAppDelegate : UIResponder <UIApplicationDelegate, LocationFoundProtocol>
一切正常——除了我在我的位置控制器中分配代表时收到警告——就像这样:
self.positioningBrain.positioningNetworkingDelegate = [UIApplication sharedApplication].delegate;
它告诉我:
Assigning to 'id<LocationFoundProtocol>' from incompatible type 'id<UIApplicationDelegate>'
似乎它根本看不到我的 AppDelegate 实际上符合我指定的协议 - 即使它是在标题中声明的。
XCode 注册这种不匹配是否有某些原因?我对我的代码可以正常工作并不感到惊讶,因为无论如何协议都应该是语义的,但是如果有更好的方法可以做到这一点,我想知道。