objective-c中的点符号

时间:2013-02-26 16:15:56

标签: java ios objective-c xcode

我有一个Java程序,我正在转换为objective-c。

在Java中,我使用点表示法,例如,有以下代码行:

this.m_root.computeGlobalTransforms();

调用一个名为computeGlobalTransforms()的方法。

我能否在objective-c中使用这样的点符号,或者我需要将该行写成并将'm_root'作为对象传递:

[self computeGlobalTransforms:m_root];

3 个答案:

答案 0 :(得分:4)

如果computeGlobalTransforms是类m_root对象的实例方法,并且m_rootself的类属性,则语法为:

[self.m_root computeGlobalTransforms]. 

我建议您参考学习目标-C:入门中的Methods and Messaging


如果computeGlobalTransformsVA_Bone方法,则语法为:

VA_Bone *bone = [[VA_Bone alloc] init];
[bone computeGlobalTransforms];

您的bone变量是一个简单的局部变量,因此无需引用self.m_root


顺便说一下,作为惯例,通常不使用变量和类名中间的下划线。请参阅 Cocoa编码指南中的Naming Properties and Data Types另请参阅使用Objective-C编程的Conventions中对“camel case”的引用。 < / p>

因此,对于您的班级,更常见的命名约定是VABone。同样,对于您提到的原始m_root属性,您可以(a)给它一个更具描述性的名称; (b)使用骆驼箱。现在我不知道m_root的“m”应该代表什么(单独说明这个问题),但是让我们说它适用于中等大小的图像,那么它可能是{{1等等。

答案 1 :(得分:3)

可以使用点符号来调用零参数方法。你绝对不应该。点符号由编译器处理,而不是运行时间 - 对于类似的问题有一个非常好的答案,它讨论了它的工作原理,以及为什么你不应该使用它(...除了setter / getters以外的任何东西)这里:

Objective-C dot notation with class methods?

答案 2 :(得分:0)

不,你不能,你只能为你的房产使用Dot.Notation作为设置者和吸气剂。