【问题标题】:New compiler warning in iOS 5 SDK about initializing with incompatible pointer typesiOS 5 SDK 中关于使用不兼容的指针类型初始化的新编译器警告
【发布时间】:2011-10-25 20:31:25
【问题描述】:

此声明

drawTimebar *drawView = [drawTimebarView initWithFrame:drawTimebarView.frame];

在 iOS 4 中运行良好,但使用 iOS 5 SDK 时会发出警告:

使用“UIView *”类型的表达式初始化“drawTimebar *”的不兼容指针类型

为什么会发生这种变化,我能做些什么来解决它?

【问题讨论】:

  • 附带说明,您的类名应该始终大写。这是 obj-c 中的标准约定。

标签: objective-c ios types compiler-warnings


【解决方案1】:

突出的一点是您将变量声明为drawTimebar,但初始化并分配了drawTimebarView

【讨论】:

    【解决方案2】:

    首先,类名应始终以大写字母开头,并且是驼峰式。这有助于其他人阅读您的代码并帮助您跟踪实例与类。

    其次,你声明drawViewdrawTimeBar的一个实例(大概这是一个类,所以它真的应该是DrawTimeBar)用这个位

    drawTimebar *drawView
    

    但是,当您初始化指针时,您正在使用该位创建drawTimeBarView 的实例(可能也是一个类,因此应该是DrawTimeBarView

    [drawTimebarView initWithFrame:drawTimebarView.frame];
    

    警告是让您知道您不一致。我的猜测是你真的想拥有

    drawTimebarView *drawView = [drawTimebarView initWithFrame:drawTimebarView.frame];
    

    【讨论】:

    • 另一点是[drawTimebarView initWith...] 有问题,虽然具体是什么还不清楚。它要么是名称错误的类方法,类名大写错误,要么是(可能)未分配实例的无效初始化。还是……?
    • 您好 PengOne,感谢您的回答,但不幸的是它不起作用。我会试着解释我在这里做什么。我使用了一些从互联网上抓取的代码,所以请原谅任何错误或约定错误。 drawTimeBarView 是我父视图中的 UIView,而 drawTimeBar 是该视图的类。我正在尝试初始化此类,以便可以在 drawTimeBarView 中绘制一些东西。它工作正常,但它只是在 XCode 中给出了这个错误。真的不明白出了什么问题。问候
    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2020-11-21
    相关资源
    最近更新 更多