我有以下类:我初始化了两次吗?
@interface Object2D : NSObject
{
Point2D* position;
Vector2D* vector;
FigureType figure;
CGSize size;
}
@property (assign) Point2D* position;
@property (assign) Vector2D* vector;
@property (assign) CGSize size;
...
@end
及其实施:
@implementation Object2D
@synthesize position;
@synthesize vector;
@synthesize size;
- (id)init
{
if (self = [super init])
{
position = [[Point2D alloc] init];
vector = [[Vector2D alloc] init];
size.width = kDefaultSize;
size.height = kDefaultSize;
}
return self;
}
当我创建的Object2D
一个实例,我这样做:
- (void) init
{
// Create a ball 2D object in the upper left corner of the screen
// heading down and right
ball = [[Object2D alloc] init];
ball.position = [[Point2D alloc] initWithX:0.0 Y:0.0];
ball.vector = [[Vector2D alloc] initWithX:5.0 Y:4.0];
}
我不知道我是否正在初始化两个对象Point2D
和两个对象Vector2D
,因为我创建了一个Point2D实例和Object2D init方法中的Vector2d。
@class Vector2D;
@interface Point2D : NSObject
{
CGFloat X;
CGFloat Y;
}
@interface Vector2D : NSObject
{
CGFloat angle;
CGFloat length;
Point2D* endPoint;
}
类Object2D,Point2D和Vector2D没有dealloc方法。
有什么建议吗?
我已经更新了添加'Object2D'实现的问题。属性具有分配属性。 – VansFannel 2011-06-15 14:43:20
当你创建一个Object2D的实例并调用ball.position = etc等的时候,当你将这些变量分配给其他对象时,仍然创建两个实例,并且你的init方法中的分配也会泄漏,那么原始对象就是泄漏。 – 2011-06-15 14:51:55
我不会在init方法中初始化这些对象。 – VansFannel 2011-06-15 17:46:19