Я использую перо в качестве шаблона для нескольких кнопок.Казалось, работает нормально, у каждого из них есть свое независимое государство.Однако, когда я пошел отпустить кнопки, я потерпел крах в разлочке.Вот код ...
mSoundBtns = new cSoundButton*[mNumSounds];
for(unsigned int i = 0 ; i < mNumSounds; ++i) {
mSoundBtns[i] = nil;
}
for(unsigned int s = 0; s < mNumSounds; ++s) {
[[NSBundle mainBundle] loadNibNamed:@"InstanceSoundButton" owner:self options:nil];
//Auto Loads via Outlet into 'soundNib'
mSoundBtns[s] = soundNib;
soundNib = nil;
uint32 count = mSoundBtns[s].retainCount;
NSLog(@"Last Count: %d", count);
}
for(unsigned int j = 0; j < mNumSounds; ++j) {
[mSoundBtns[j] release]; //**** Crash here on 7th (of 8) release
mSoundBtns[j] = nil;
}
Заголовок:
@interface cLocationContext {
...
cSoundButton** mSoundBtns;
IBOutlet cSoundButton* soundNib;
}
@property (nonatomic, assign) IBOutlet cSoundButton* soundNib;
@end
Перо очень простое, оно просто включает родительское представление и дочернее представление пользовательского типа представления.
cSoundButton просто отслеживает имя и логическое состояние Mute или Нет.Здесь есть dealloc
- (void)dealloc {
delete[] mSoundTag;
// Call the inherited implementation
[super dealloc]; //****Crashes in here
}
Сбой происходит внутри вызова super dealloc, в UIButton -> UIButtonContent dealloc.Я предполагаю, что я делаю что-то плохое с моим управлением памятью, например, двойную обработку, но я не могу определить, где.
Допустимо ли то, что я делаю, загружая перо несколько раз?