У меня есть эта структура данных (struct) в C++:
struct Vector3f
{
float x;
float y;
float z;
Vector3f()
{
}
Vector3f(float _x, float _y, float _z)
{
x = _x;
y = _y;
z = _z;
}
};
Я недавно изучал и использовал Objective-C. Я обнаружил, что в Objective-C есть много вещей, которые я не могу сделать в C++. Итак, я хочу иметь возможность сделать это в Objective-C с помощью конструкторов. Я знаю, что Objective-C не поддерживает перегрузку функций, например C++. Итак, первый конструктор не требуется.
Вы просто использовали бы три свойства:
@interface Vector : NSObject
@property(nonatomic, assign) float x, y, z;
- (id)init;
- (id)initWithX:(float)x y:(float)y z:(float)z;
@end
@implementation Vector
- (id)init {
// Members default to 0 implicitly.
return [super init];
}
- (id)initWithX:(float)x y:(float)y z:(float)z {
if (self = [super init]) {
self.x = x;
self.y = y;
self.z = z;
}
return self;
}
@end
Обратите внимание, что переопределение init
здесь необязательно, так как все, что он делает, это вызов метода суперкласса init
.
self
. Так что -init
должен просто return [self initWithX:0 y:0 z:0];
,
vec3f.x = _x;
, и вернуть этот Vector3f