【问题标题】:Bad Receiver type 'NSInteger' (aka 'int')错误的接收器类型“NSInteger”(又名“int”)
【发布时间】:2012-09-22 12:22:25
【问题描述】:
int thumbCount = [_totalThumbs thumbsViewNumberOfThumbs:self];
  1. _totalThumbs 是一个 NSInteger 类型的属性。
  2. thumbsViewNumberOfThumbs 是 NSInteger 类型的方法。

我需要获取“int”本身的计数,以便可以将其用于进一步计算。 有什么建议么?

【问题讨论】:

  • 没有看到thumbsViewNumberOfThumbs: 的声明方式和位置,我只能猜测你应该做[self thumbsViewNumberOfThumbs:_totalThumbs] 而不是相反。您不能在其属性上调用实例方法,只能在类实例上调用。

标签: iphone nsinteger


【解决方案1】:

这个问题说不通。

首先,NSInteger 不是一个类。这是long long 的类型定义。这意味着,您不能将其用作 Objective-C 消息接收器。

您可能想要的是在其类实现它的对象上调用此thumbsViewNumberOfThumbs: 方法并将其分配给NSInteger。或者直接将其分配给int - 对于这种简单的情况,intNSInteger 是兼容的类型(假设您不想使用不适合int 的大数字。 ..)

【讨论】:

    【解决方案2】:

    编译器是对的:NSInteger 不是可能有方法的类型,因为它不是 id 派生类型。

    如果您有一个 NSInteger 作为参数的方法,则在冒号: 之后传递它,而不是作为方法的接收者。

    【讨论】:

      【解决方案3】:
      int thumbCount = [self thumbsViewNumberOfThumbs:_totalThumbs];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-04
        • 2019-11-27
        • 1970-01-01
        相关资源
        最近更新 更多