将 uiviewcontroller strong 发送到不兼容类型 id 的参数的警告

Posted

技术标签:

【中文标题】将 uiviewcontroller strong 发送到不兼容类型 id 的参数的警告【英文标题】:Warning for sending uiviewcontroller strong to parameter of incompatible type id 【发布时间】:2015-08-20 08:27:20 【问题描述】:

我已经设置了这样的委托,我收到了警告。如果我放 WSHelperDelegate,它会静音。但是,在这种情况下,我需要使用 UIVIewController 这样的一般情况,而不是告诉特定的视图控制器。我怎样才能使这个警告静音?

【问题讨论】:

【参考方案1】:

你有几个选项可以解决这个问题:

1.

+ (void)request... 

    // ...
    [[NSHelper sharedInstance] getDetailDataWithEntity:[NSString stringWithFormat:@"%@%@", url, articleID] andView:vc.view andDelegate:(UIViewController<WSHelperDelegate> *)vc];


2.

+ (void)requestEditDataWithArticleId:(NSString *)articleId andNavType:(NavTypeCollection)navType andDelegate:(UIViewController<WSHelperDelegate> *)vc 

   // ...
   [[NSHelper sharedInstance] getDetailDataWithEntity:...];


【讨论】:

【参考方案2】:

确保控制器符合您正在使用的委托:

例如:

@interface yourController : UIViewController <WSHelperDelegate> 
//or <WSHelperProtocol>, whatever it is named.

或者您可以通过以下方式使警告静音:

....andDelegate:(id)vc];

【讨论】:

我没有该代码的接口。它是用 NSObject 类编写的。该函数将从任何地方调用。

以上是关于将 uiviewcontroller strong 发送到不兼容类型 id 的参数的警告的主要内容,如果未能解决你的问题,请参考以下文章

在父视图控制器中管理几个 UIViewController

UIViewController 失去了对属性的跟踪

UIViewController 所有者(获取持有另一个实例的实例)

UISwitch

倒计时demo

将委托设置为对象