У меня есть некоторые утечки памяти в моем приложении, и я думаю, что они восходят к моему методу - (id)copyWithZone:(NSZone *)zone моего класса «Проект». Цель этой копии — создать глубокую копию, поскольку значения необходимо изменить, не затрагивая исходные значения. Этот класс имеет собственный метод инициализации:
- (id)initWithProjectID:(NSInteger)aProjectID name:(NSString *)aProjectName private:(BOOL)isPrivateProject userProjectOrderTieID:(NSInteger)aUserProjectOrderTieID orderID:(NSInteger)anOrderID {
self = [super init];
if (self) {
projectID = aProjectID;
projectName = [[NSString alloc] initWithString:aProjectName];
isPrivate = isPrivateProject;
userProjectOrderTieID = aUserProjectOrderTieID;
orderID = anOrderID;
}
return self;
}
и метод копирования:
- (id)copyWithZone:(NSZone *)zone {
Project *copy = [[[self class] allocWithZone:zone]
initWithProjectID:projectID
name:projectName
private:isPrivate
userProjectOrderTieID:userProjectOrderTieID
orderID:orderID];
return copy;
}
и для полноты метод Dealloc:
- (void)dealloc {
[projectName release];
[super dealloc];
}
Все ivars являются NSInteger, кроме projectName, это NSString. Может ли кто-нибудь увидеть какие-либо проблемы с этим кодом?