我有一个Rectangle类,它具有属性width和height。它还有一个名为 origin ( - (XYPoint *)origin)的实例属性/对象。下面是我指定的初始化程序的代码,我在其中传递XYPoint对象作为参数。如果我将XYPoint类的属性作为此方法中的参数,然后初始化XYPoint对象以及在方法内为它分配内存,有没有办法(或者没关系)?否则,我必须在我的主程序中创建一个XYPoint对象,并将其作为参数传递,这是要输入的更多代码。
-(id) initWithWidth:(int)w andHeight:(int)h andOrigin:(XYPoint *)o
{
self = [super init];
if (self) {
[self setWidth: w andHeight: h];
self.origin = o;
}
return self;
}
P.S.-我是编程和Objective C的新手,请原谅我,如果我在我的问题中说了一些技术错误的东西。谢谢!
答案 0 :(得分:0)
个人 - 我试图避免使用参数的初始化器。我认为这会导致编写更多代码和缺乏灵活性。我只使用指定的初始化器来做两件事:
一般来说,对于Rectangle类,我会这样使用:
Rectangle * r = [ [ Rectangle alloc ] init ] ;
r.x = x ;
r.y = y ;
r.origin = o ;
// use r
除了上述条件外,根本不使用指定的初始化模式。 (例如,创建不可变的Rectangle实例)
最后,可能没有必要创建一个Rectangle类 - 只需使用CGRect / NSRect原语结构。