iOS 5 SDK 中关于使用不兼容的指针类型初始化的新编译器警告
Posted
技术标签:
【中文标题】iOS 5 SDK 中关于使用不兼容的指针类型初始化的新编译器警告【英文标题】:New compiler warning in iOS 5 SDK about initializing with incompatible pointer types 【发布时间】:2011-10-25 20:31:25 【问题描述】:此声明
drawTimebar *drawView = [drawTimebarView initWithFrame:drawTimebarView.frame];
在 ios 4 中运行良好,但使用 iOS 5 SDK 时会发出警告:
使用“UIView *”类型的表达式初始化“drawTimebar *”的不兼容指针类型
为什么会发生这种变化,我能做些什么来解决它?
【问题讨论】:
附带说明,您的类名应该始终大写。这是 obj-c 中的标准约定。 【参考方案1】:突出的一点是您将变量声明为drawTimebar
,但初始化并分配了drawTimebarView
。
【讨论】:
【参考方案2】:首先,类名应始终以大写字母开头,并且是驼峰式。这有助于其他人阅读您的代码并帮助您跟踪实例与类。
其次,你声明drawView
是drawTimeBar
的一个实例(大概这是一个类,所以它真的应该是DrawTimeBar
)用这个位
drawTimebar *drawView
但是,当您初始化指针时,您正在使用该位创建drawTimeBarView
的实例(可能也是一个类,因此应该是DrawTimeBarView
)
[drawTimebarView initWithFrame:drawTimebarView.frame];
警告是让您知道您不一致。我的猜测是你真的想拥有
drawTimebarView *drawView = [drawTimebarView initWithFrame:drawTimebarView.frame];
【讨论】:
另一点是[drawTimebarView initWith...]
有问题,虽然具体是什么还不清楚。它要么是名称错误的类方法,类名大写错误,要么是(可能)未分配实例的无效初始化。还是……?
您好 PengOne,感谢您的回答,但不幸的是它不起作用。我会试着解释我在这里做什么。我使用了一些从互联网上抓取的代码,所以请原谅任何错误或约定错误。 drawTimeBarView 是我父视图中的 UIView,而 drawTimeBar 是该视图的类。我正在尝试初始化此类,以便可以在 drawTimeBarView 中绘制一些东西。它工作正常,但它只是在 XCode 中给出了这个错误。真的不明白出了什么问题。问候以上是关于iOS 5 SDK 中关于使用不兼容的指针类型初始化的新编译器警告的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 7 之前的项目中编译警告“不兼容的指针类型初始化 'UIImage *' 使用类型为'CIImage * _Nullable”的表达式
使用类型表达式初始化 'void(^)(struct ALAssetsGroup *, BOOL *)' 的不兼容块指针类型
使用 UItableViewCell 类型的表达式初始化“CustomCellView *”的不兼容指针类型
“指向使用 'NSNumber *' 类型的表达式初始化 'int' 的整数转换的不兼容指针”
使用“__kindof NSManagedObject * _Nonnull”类型的表达式初始化“NSEntityDescription *”的不兼容指针类型