我有一个要转换为objective-c 的Java 程序。
在 Java 中,我使用点表示法,例如,有以下代码行:
this.m_root.computeGlobalTransforms();
它调用了一个名为 computeGlobalTransforms() 的方法。
我是否能够在objective-c中使用这样的点表示法,或者我需要将行写成并将'm_root'作为对象传递:
[self computeGlobalTransforms:m_root];
我有一个要转换为objective-c 的Java 程序。
在 Java 中,我使用点表示法,例如,有以下代码行:
this.m_root.computeGlobalTransforms();
它调用了一个名为 computeGlobalTransforms() 的方法。
我是否能够在objective-c中使用这样的点表示法,或者我需要将行写成并将'm_root'作为对象传递:
[self computeGlobalTransforms:m_root];
ifcomputeGlobalTransforms
是类m_root
对象的实例方法,并且 ifm_root
是 的类属性self
,则语法为:
[self.m_root computeGlobalTransforms].
我建议您参考学习目标-C:入门中的方法和消息传递。
如果computeGlobalTransforms
是VA_Bone
方法,则语法为:
VA_Bone *bone = [[VA_Bone alloc] init];
[bone computeGlobalTransforms];
您的bone
变量是一个简单的局部变量,因此不需要引用self.m_root
。
顺便说一句,按照惯例,变量名和类名中间的下划线一般不使用。请参阅Cocoa 编码指南中的命名属性和数据类型。另请参阅Objective-C 编程约定中对“camel case”的引用。
因此,更常见的命名约定将VABone
适用于您的类。同样,对于您提到的原始m_root
财产,您会 (a) 给它一个更具描述性的名称;(b) 使用骆驼案。现在我不知道“m”m_root
应该代表什么(单独说明问题),但假设它是用于中等大小的图像,那么它可能是mediumSizedImagesRoot
,或其他什么。
You can use dot notation to call zero parameter methods. You absolutely shouldn't. Dot notation is handled by the compiler, rather than the run time - there's a very good answer to a similar question that talks about why it works, and why you shouldn't use it (...for anything other than setters/getters) here:
不,您不能,您只能将 Dot.Notation 用于属性的设置器和获取器。