代码之家  ›  专栏  ›  技术社区  ›  Josh Bradley

帮助理解C代码并移植到Objective-C

  •  3
  • Josh Bradley  · 技术社区  · 17 年前

    好吧,我有一个原型,是别人用C语言写的,我正试着把它放到客观C语言中去。现在,我还没有正式的C语言经验,所以我还不知道它的一切。我知道前三个变量是什么,但是第四行和第五行(C_数据)正在做什么,我遇到了一些问题。第四个是声明一个方法,第五个是定义它,还是发生了什么?谢谢你的帮助!

    public class c_data {
        public double value;
        public int label;
        public int ID;
        public c_data() { }
        public c_data(double val) {
            value = val;
        }
    }
    
    7 回复  |  直到 17 年前
        1
  •  16
  •   Quinn Taylor    17 年前

    第四行和第五行是C中的建设者。它们相当于objective-c中的[[c_data alloc]init]链。c_允许您根据所取参数重载构造函数。这相当于在Objective-C中有两种不同的初始化方法:

    @interface CData : NSObject
    {
       double value;
       int label;
       int ID;
    }
    
    @property double value;
    @property int label;
    @property int ID;
    
    -(id) init;
    -(id) initWithValue:(double)value;
    
    @end
    
        2
  •  2
  •   Andrew Hare    17 年前

    第4行是无参数构造函数,第5行是无参数构造函数。

        3
  •  2
  •   Vinay Sajip    17 年前

    第一个C_数据是默认的无参数构造函数,它将结构的字段初始化为默认值(值->0.0,标签->0,ID->0),第二个C_数据是将实例的值字段设置为传入参数的构造函数。 val 以及其他字段的默认值。我所描述的是这两个构造函数调用如何初始化实例。

        4
  •  1
  •   Mehmet Aras    17 年前

    第四个和第五个是构造器,在您新建C_数据实例时用于初始化该实例。

        5
  •  1
  •   Paul Sonier    17 年前

    第四个是为不带参数、不带动作的类定义一个构造函数,第五个是为不带参数、不带动作的类定义一个构造函数,将类内部成员变量值设置为传递值val。

        6
  •  1
  •   nikmd23    17 年前

    四、五号线均为施工人员。

    第四行是“默认”构造函数,在本例中,它不初始化任何变量。

    第5行的构造函数将名为value的变量设置为传入的参数。

        7
  •  0
  •   Jonathan Sterling    17 年前

    如果可以的话,这就相当于在一个目标C类中同时使用以下两种方法:

    • (ID)初始化;
    • (id)initWithNumber:(nsNumber*)编号;

    构造器和初始值设定项是类似的,只是看起来有点不同。

    推荐文章