1

我有一个要转换为objective-c 的Java 程序。

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

this.m_root.computeGlobalTransforms();

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

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

[self computeGlobalTransforms:m_root];
4

3 回答 3

4

ifcomputeGlobalTransforms是类m_root对象的实例方法,并且 ifm_root是 的类属性self,则语法为:

[self.m_root computeGlobalTransforms]. 

我建议您参考学习目标-C:入门中的方法和消息传递。


如果computeGlobalTransformsVA_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,或其他什么。

于 2013-02-26T16:23:44.240 回答
3

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:

Objective-C dot notation with class methods?

于 2013-02-26T16:29:54.450 回答
0

不,您不能,您只能将 Dot.Notation 用于属性的设置器和获取器。

于 2013-02-26T16:18:17.983 回答