分配给不兼容类型的强大是什么意思?

时间:2013-07-16 15:56:53

标签: objective-c

我很难找到从不兼容类型分配给__strong意味着什么的解释。我想了解该消息,而不是如何修复特定实例。

我知道__strong意味着我将拥有该对象。例如:

info = [ADMCoreFactory newServiceInfoWithURI:[queue uri]];

在这种情况下,我收到一条警告,指出我正在分配'__strong id< ADMServiceInfo>'来自不兼容的类型'ADMCoreFactory *'

这是否意味着ADMCoreFactory需要“拥有”该对象和我的id< ADMServiceInfo>对象需要是一个弱参考?

这是头文件中的方法声明:

+ (id<ADMServiceInfo>)newServiceInfoWithURI:(NSString *)anURI; 

1 个答案:

答案 0 :(得分:2)

'__strong id<ADMServiceInfo>' from incompatible type 'ADMCoreFactory *'

这告诉您ADMCoreFactory不符合ADMServiceInfo协议,因此您无法将其分配给该类型的变量。 __strong这里有点红鲱鱼。它在技术上属于这种类型,但在这种情况下它并不是重要的部分。

您可能希望+newServiceInfoWithURI:返回除ADMCoreFactory之外的其他类型,在这种情况下您可能错误地声明了它。确保没有发出其他警告。在ObjC代码中你应该没有任何警告。