【问题标题】:'id<MFMailComposeViewControllerDelegate>'from incompatible type 'ViewController *const_strong''id<MFMailComposeViewControllerDelegate>'来自不兼容类型'ViewController *const_strong'
【发布时间】:2012-09-21 19:07:50
【问题描述】:

在我的应用程序中,我有一个按钮,按下该按钮会打开一封填写“收件人”和“主题”的电子邮件,但我在这行代码中收到此警告:

mc.mailComposeDelegate = self; 

警告说:

Assigning to 'id&lt;MFMailComposeViewControllerDelegate&gt;'from incompatible type 'ViewController *const_strong'

我该怎么办?请说清楚,我对xCode不太熟练。

【问题讨论】:

    标签: objective-c xcode mfmailcomposeviewcontroller


    【解决方案1】:

    此警告表示您没有告诉编译器您的类 ViewController 实现了 MFMailComposeViewControllerDelegate 协议。

    如果您还没有这样做,请实现该协议中所有必需的方法。在您的情况下,它只有一个 (– mailComposeController:didFinishWithResult:error:)。

    之后你必须告诉编译器你的类实现了这个协议。您可以通过将 &lt;MFMailComposeViewControllerDelegate&gt; 添加到 ViewController 的 @interface 来做到这一点。 (接口在你的头文件ViewController.h中)。

    您的界面现在应该如下所示:

    @interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
    
    @property ...
    
    @end
    

    【讨论】:

    • 谢谢,这真的改变了什么吗?即使出现警告,该应用程序也能正常运行?
    • 它可以帮助您。编译器希望确保您知道 mailComposeDelegate 要求您实现协议中的方法。如果你把确认声明放在你的界面中,而你忘记实现所需的方法,编译器会发出另一个警告。只是为了帮助您实现所有方法。有时,某些必需的方法仅在非常不同的情况下调用。如果你没有实现这样的方法,你的应用就会崩溃。
    【解决方案2】:

    我有同样的问题。问题是我实现了错误的协议,我怀疑你可能也在做同样的事情。

    在你的视图控制器头文件中不要写: @interface ViewController : UIViewController &lt;MFMessageComposeViewControllerDelegate&gt;

    改为使用: @interface ViewController : UIViewController &lt;MFMailComposeViewControllerDelegate&gt;.

    【讨论】:

      猜你喜欢
      • 2012-04-09
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      相关资源
      最近更新 更多