开发者社区> 问答> 正文

Objective-C 为什么会报错没有这个 self 方法

screenshot
为什么下面用self会报错,请指教。
是不是太简单了!

展开
收起
a123456678 2016-07-27 16:50:58 1922 0
2 条回答
写回答
取消 提交回答
  • 宇宙虽有其起源,却没有终结。无限。 星球虽也有起源,却因其自身之力走向毁灭。有限。

    max rank是个类方法,setRank是个实例方法,在setRank里面的self是实例对象,而实例对象没有这个类方法。
    简单的解法:1.maxRank改成实例方法(+ -> -) 2. [[self class] maxRank]

    2019-07-17 20:00:51
    赞同 展开评论 打赏
  • 仔细看看,maxRank方法前面是“+”号而不是“-”号,也就是说你把maxRank定义成类方法(相当于Java里的static函数)了。类方法是不能访问实例变量和属性的。

    应该把这里的“+”改成“-”。

    另:getter和setter里是可以用self的。不过显然,例如在属性foo的getter和setter里,应该用_foo,而不能用self.foo。否则self.foo又会调用foo的getter和setter,会造成无限递归调用的。

    2019-07-17 20:00:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载