我只花了 3 个小时调试一个错误,最后(我认为)将错误范围缩小到变量名。
我使用的是 initMonths(初始月份),这导致了不可预测的错误,但是当我改为 iMonths 时,它起作用了!
我可以理解单独阻止使用 init,但如果它只是作为变量名的一部分被阻止,我会感到惊讶。这是错误还是功能?
最佳答案
如果它只是与名称重叠有关,则不一定是错误。 ARC 的一部分用于知道何时应该更新保留计数,您可能会遇到这种情况。
类似的规则适用于在名称开头使用 new
(出于同样的原因)。
避免在任何名称的开头使用 init
无疑是简单而明智的,除非它实际上是一个 init
函数。
我可以想象,您的问题可能与 ARC 介入本不该参与的事情有关,并且需要一段时间才能调用不应该调用的内容,但这很奇怪。
我预计这个问题实际上是另外一回事,而且名称更改还有一些其他影响。最坏的情况意味着您有内存问题,并且更改名称会改变代码的内存占用,因此您只是将错误移到了其他地方(或类似的地方)。
关于ios - 'init' 是否被禁止作为变量名的*部分*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38225282/