我有一个Java程序,我正在转换为objective-c。
在Java中,我使用点表示法,例如,有以下代码行:
this.m_root.computeGlobalTransforms();
调用一个名为computeGlobalTransforms()的方法。
我能否在objective-c中使用这样的点符号,或者我需要将该行写成并将'm_root'作为对象传递:
[self computeGlobalTransforms:m_root];
答案 0 :(得分:4)
如果computeGlobalTransforms
是类m_root
对象的实例方法,并且m_root
是self
的类属性,则语法为:
[self.m_root computeGlobalTransforms].
我建议您参考学习目标-C:入门中的Methods and Messaging。
如果computeGlobalTransforms
是VA_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以外的任何东西)这里:
答案 2 :(得分:0)
不,你不能,你只能为你的房产使用Dot.Notation作为设置者和吸气剂。