只是想把一些 Java 代码转换成 Objective-C。
这是用 Java 编写的名为“bone”的类的构造函数的代码片段。
public class Bone {
public static double RADS_TO_DEGS =
Quaternion.RADS_TO_DEGS;
public static double DEGS_TO_RADS =
Quaternion.DEGS_TO_RADS;
public static int LUPA_4CC =
FourCCUtil.fourCCInt("LUPA");
public static int RUPA_4CC =
FourCCUtil.fourCCInt("RUPA");
public static int LLRA_4CC =
FourCCUtil.fourCCInt("LLRA");
public static int RLRA_4CC =
FourCCUtil.fourCCInt("RLRA");
protected float length;
protected Bone parent;
protected Bone[] childBones;
protected int fourCCName;
protected int parentFourCCName;
protected float[] translation;
这是我在 Objective-c 中重写这段代码的尝试:
骨头.h
@interface Bone : NSObject{
@property static double RADS_TO_DEGS;
@property static double DEGS_TO_RADS;
@property static int LUPA_4CC;
@property static int RUPA_4CC;
@property static int LLRA_4CC;
@property static int RLRA_4CC;
@protected {
@property float length;
@property Bone parent;
@property Bone[] childBones ;
@property int fourCCName;
@property int parentFourCCName;
@property float[] translation;
骨头.m
@implementation VA_Bone
-(id)init{
self=[super init];
if(self){
VA_4ccUtil *FCC = [[VA_4ccUtil alloc] init];
VA_Bone *Bone = [[VA_Bone alloc] init];
VA_TRTransform *TRTform = [[VA_TRTransform alloc] init];
VA_TRUtil *TRUtil = [[VA_TRUtil alloc] init];
VA_Quaternion *Quat = [[VA_Quaternion alloc] init]];
[Bone setDEGS_TO_RADS: [Quat DEGS_TO_RADS]];
[Bone setRADS_TO_DEGS: [Quat RADS_TO_DEGS]];
[Bone setLUPA_4CC: [TRUtil fourCCInt:"LUPA"]];
[Bone setRUPA_4CC: [TRUtil fourCCInt:"RUPA"]];
[Bone setLLRA_4CC: [TRUtil fourCCInt:"LLRA"]];
[Bone setRLRA_4CC: [TRUtil fourCCInt:"RLRA"]];
[self setParent:NULL];
[self setFourCCName:0];
[self setParentFourCCName:0];
[self setTranslation:NULL];
[self setLength:0];
}
return self;
}
我的问题是:
1) 我是否正确声明了静态方法?
2) 是否可以分配类类型,或者使用 NSMutableArray 等数组而不是 Bone[] 更好?
由于我目前正在将一些 Java 代码转换为 Objective-c,因此我仍在努力思考如何在 Objective-c 中构造一个类。
亲切的问候, 山姆
Have I declared the static methods correctly?
没有。 Objective C 中没有 @property static
这样的东西。你需要将它们声明为类方法:
+(double)RADS_TO_DEGS; // This is a getter
如果你需要一个setter,再写一个方法:
+(void)setRADS_TO_DEGSdouble)val; // This is a setter
Is it possible to assign class types or is it better to use an array such as NSMutableArray instead of Bone[]?
由于所有权问题,普通 C 数组存在问题。 NSArray
属性将为您提供更好的服务:它将为您提供相同的灵 active ,为您的客户提供快速枚举,并以符合 Objective C 的惯用方式处理资源清理。
关于java - Objective C 中的构造函数、静态方法和类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552612/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |