Xcode 4 点符号代码感觉反应过度

Posted

技术标签:

【中文标题】Xcode 4 点符号代码感觉反应过度【英文标题】:Xcode 4 dot notation code sense overreaction 【发布时间】:2011-12-04 14:17:30 【问题描述】:

我和Xcode 4 dot notation code sense problem正好相反!点符号的代码完成不仅显示属性,还显示方法(在每个完成的左侧标有 P 或 M,分别适当地指示它是属性还是方法)。这是 Xcode 4 上的正常行为还是我做错了什么?

但这并不总是发生。它似乎发生在我定义的类上,但不适用于预定义的类。但我还没有进行足够的测试来确定这一点。

也许可以自定义代码感知,但对于 where code sense options in Xcode 4 are 还没有答案,在 "Customizing Xcode: fonts, code sense and more" 上再次要求 Xcode 3.2.2 没有答案。

【问题讨论】:

似乎不建议仅在类对象的点之后使用方法名称!正如 BJ Homer 所说,NSArray 的“count”方法建议在该类型的对象后面加上点。 【参考方案1】:

ObjC 点表示法可用于任何不带参数的方法;它不限于正式声明的属性。这主要是因为当点符号被引入语言时,存在大量具有-foo-setFoo: 方法的现有代码,隐式定义了一个属性。因此,他们决定为任何符合要求的方法名称启用点语法,即使它们不是显式 @property 的一部分。

现在,我们可以讨论这是否是一个好的决定,但事实就是如此。 myArray.count 是完全有效的代码,即使没有“计数”@property

【讨论】:

我知道对非属性使用点表示法是有效的,但是从关于点表示法的各种辩论中,我认为唯一有用的结果是用它来区分属性和方法。我的问题是,Xcode 似乎以这种方式对预定义类有帮助,但对用户定义类没有帮助。所以.. 1. 你能确认这发生在你身上吗? 2.有没有办法对其进行配置以使其以这种方式工作?谢谢你的回答。 事实上,很难找出 API 类中哪些 getter 和 setter 有副作用,哪些没有,因此我更喜欢对所有没有副作用的旧类使用 box 表示法'不要使用显式属性。由于我是初学者,我不确定如何识别哪些是真正的属性,哪些不是那么容易。有没有办法确定这一点?甚至文档似乎也没有以这种方式对任务列表进行分类。 1. Xcode 对待我的类和框架提供的类与在我的机器上为点语法完成提供非属性相同。 2.不,没有办法配置完成。 3. getter 是否有副作用与是否为属性无关。 -[UIViewController view] 是一个声明为只读的@property,它有一个副作用。 “真正的属性”和旧式的没有区别。该文档确实通过方法名称上缺少-+ 来指示@properties,但这只是表明它可能具有隐式设置器。 @trss 如果您正在寻找一种方法来区分没有副作用的属性和有副作用的属性......没有。即使在合成属性的情况下,也有人可以通过-addObserver:forKeyPath: 添加副作用。 1.是的,我编辑了这个问题,确认在点之后不建议类对象使用方法。 2. 所以基本上保持我对属性使用点表示法和使用代码完成的方法使用方框表示法的风格有点困难。希望他们在 Xcode 中使代码完成可配置。 3.我不知道有副作用的故意属性。感谢您指出了这一点。我只是使用无副作用作为有意属性的替代方案。此外,我从未在文档中看到没有 - 或 + 前缀的任务。你能给我举个例子吗?谢谢。

以上是关于Xcode 4 点符号代码感觉反应过度的主要内容,如果未能解决你的问题,请参考以下文章

建议我一些关于使用反应点符号的文本输入的想法

读书笔记,《反脆弱》,第二章,随处可见的过度补偿与过度反应

将反应本机代码与 Xcode 捆绑时运行 .js 脚本

xcode4.2 编C怎么用SCANF输入?运行后没有反应 怎么在CONSOLE里输入?

这种情况是怎么回事啊左键点空白的地方没有反应,而且键盘数字键打不出数字,打出来的全是符号,求大神指

带有自定义表情符号的反应角色