Во-первых, вы теряете память, как сито. Много alloc/init
& mutableCopy
, нет release
с. Я бы предложил прочитать руководство по управлению памятью .
Далее, ваши имена методов не соответствуют соглашениям Какао. Это:
-(void)set_x:(int)my_x set_y:(int)my_y set_quarter:(int)my_quarter set_made:(bool)my_made set_location:(int)my_location;
-(void)set_miss_AND_set_make;
Должно быть что-то вроде:
-(void) resetMissAndMake; // or just missAndMake or activateMissAndMake
-(void) setX:(NSInteger)xValue y:(NSInteger)yValue quarter:(NSInteger)quarterValue location:(NSInteger)aLocation;
Кроме того, getPath
должно быть просто path
. Методы с префиксом get
очень редки и имеют очень специфическое значение.
Это тоже ерунда:
Shot *shotObject = [[Shot alloc]init];
while (shotObject = [enumOne nextObject]) {
Shot *shotShot = [[Shot alloc]init];
shotShot = [shotObject mutableCopy];
Нет необходимости ни в одном из вызовов [[Shot alloc]init]
(это оба утечки).
Наконец, ваши методы кодирования реализованы неправильно. Как указано в документации , вам необходимо позвонить super
, если необходимо.
В частности, ваш encodeWithCoder:
должен вызывать реализацию super того же самого, а initWithCoder:
должен вызывать супер initWithCoder:
, а не init
.