Новое предупреждение компилятора в iOS 5 SDK об инициализации с несовместимыми типами указателей - PullRequest
0 голосов
/ 26 октября 2011

Это утверждение

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

прекрасно работал в iOS 4, но с iOS 5 SDK выдает предупреждение:

Несовместимые типы указателей, инициализирующие «drawTimebar *» выражением типа «UIView *»

Почему это изменилось, и что я могу сделать, чтобы решить это?

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

Во-первых, имена классов всегда должны начинаться с заглавной буквы и должны быть в CamelCased. Это помогает другим читать ваш код и помогает вам отслеживать экземпляры и классы.

Во-вторых, вы заявляете, что drawView является экземпляром drawTimeBar (предположительно, это класс, поэтому на самом деле должно быть DrawTimeBar) с этим битом

drawTimebar *drawView

Однако, когда вы инициализируете указатель, вы создаете экземпляр drawTimeBarView (предположительно, также класс, и, следовательно, должен быть DrawTimeBarView) с этим битом

[drawTimebarView initWithFrame:drawTimebarView.frame];

Предупреждение дает вам понять, что вы непоследовательны. Я предполагаю, что вы действительно хотите иметь

drawTimebarView *drawView = [drawTimebarView initWithFrame:drawTimebarView.frame];
3 голосов
/ 26 октября 2011

Одна вещь, которая выделяется, это то, что вы объявляете переменную как drawTimebar, но инициализируете и присваиваете drawTimebarView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...