5

我使用以下代码将我的视图从我的控制器中取出:

CollectionItemView *myView = [self view]; 

这工作得很好,但我得到了警告Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView。我明白为什么我得到这个但是可以忽略它还是应该覆盖视图属性?

夹头

4

2 回答 2

2

如果你确定那[self view]只是CollectionItemView做:

CollectionItemView *myView = (CollectionItemView*)[self view];

或者(更好)你可以使用:

id myView = [self view];
于 2012-07-13T13:50:49.377 回答
0

没有必要覆盖它。troolee 已经提出了两种可行的解决方案。但是,为了省钱,我宁愿用不同的方式编码。

CollectionItemView *myView = nil;
if ([[self view] isKindOfClass:[CollectionItemView class])
  self.view = (CollectionItemView*)[self view];

当您从上下文中确定对象必须是 CollectionItemView 类型或其任何子类时,没有 isKindOfClass 测试的较短版本是可以的。

于 2012-07-13T14:07:02.887 回答