只是尝试将一些Java代码转换为Objective-C。
以下是一个名为' bone'的类的构造函数的代码片段。用Java编写。
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中重写此代码:
bone.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;
bone.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 []?
我仍然试图了解如何在objective-c中构建一个类,因为我目前正在将一些Java代码转换为目标c。
亲切的问候, 萨姆
答案 0 :(得分:4)
我是否正确声明了静态方法?
没有。目标C中没有@property static
这样的东西。你需要将它们声明为类方法:
+(double)RADS_TO_DEGS; // This is a getter
如果您需要一个setter,请再写一个方法:
+(void)setRADS_TO_DEGS:(double)val; // This is a setter
是否可以指定类类型,或者更好地使用NSMutableArray等数组而不是Bone []?
由于所有权问题,普通C数组存在问题。使用NSArray
属性可以获得更好的服务:它将为您提供相同的灵活性,为您的客户提供快速枚举,并以与Objective C惯用的方式处理资源清理。