菜鸟教程小白 发表于 2022-12-13 00:40:43

java - Objective C 中的构造函数、静态方法和类变量


                                            <p><p>只是想把一些 Java 代码转换成 Objective-C。</p>

<p>这是用 Java 编写的名为“bone”的类的构造函数的代码片段。</p>

<pre><code>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(&#34;LUPA&#34;);
public static int               RUPA_4CC =
                              FourCCUtil.fourCCInt(&#34;RUPA&#34;);
public static int               LLRA_4CC =
                              FourCCUtil.fourCCInt(&#34;LLRA&#34;);
public static int               RLRA_4CC =
                              FourCCUtil.fourCCInt(&#34;RLRA&#34;);

protected float               length;
protected Bone                  parent;
protected Bone[]                childBones;
protected int                   fourCCName;
protected int                   parentFourCCName;
protected float[]               translation;
</code></pre>

<p>这是我在 Objective-c 中重写这段代码的尝试:</p>

<p>骨头.h</p>

<pre><code>@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;
</code></pre>

<p>骨头.m</p>

<pre><code>@implementation VA_Bone

-(id)init{

    self=;
    if(self){

      VA_4ccUtil       *FCC       = [ init];
      VA_Bone          *Bone      = [ init];
      VA_TRTransform   *TRTform   = [ init];
      VA_TRUtil      *TRUtil    = [ init];
      VA_Quaternion    *Quat      = [ init]];         

       ];
       ];

       ];
       ];
       ];
       ];

      ;
      ;
      ;
      ;
      ;

    }
    return self;
}
</code></pre>

<p>我的问题是:</p>

<p>1) 我是否正确声明了静态方法?</p>

<p>2) 是否可以分配类类型,或者使用 NSMutableArray 等数组而不是 Bone[] 更好?</p>

<p>由于我目前正在将一些 Java 代码转换为 Objective-c,因此我仍在努力思考如何在 Objective-c 中构造一个类。</p>

<p>亲切的问候,
山姆</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>Have I declared the static methods correctly?</p>
</blockquote>

<p>没有。 Objective C 中没有 <code>@property static</code> 这样的东西。你需要将它们声明为<em>类方法</em>:</p>

<pre><code>+(double)RADS_TO_DEGS; // This is a getter
</code></pre>

<p>如果你需要一个setter,再写一个方法:</p>

<pre><code>+(void)setRADS_TO_DEGS:(double)val; // This is a setter
</code></pre>

<blockquote>
<p>Is it possible to assign class types or is it better to use an array such as NSMutableArray instead of Bone[]?</p>
</blockquote>

<p>由于所有权问题,普通 C 数组存在问题。 <code>NSArray</code> 属性将为您提供更好的服务:它将为您提供相同的灵 active ,为您的客户提供快速枚举,并以符合 Objective C 的惯用方式处理资源清理。</p></p>
                                   
                                                <p style="font-size: 20px;">关于java - Objective C 中的构造函数、静态方法和类变量,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/14552612/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/14552612/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: java - Objective C 中的构造函数、静态方法和类变量