Эта программа вылетает из строя, если я раскомментирую заявления о выпуске. я получаю, что я слишком быстро и быстро понял. но, чтобы проверить зомби, я включил их (NSZombiesEnabled = YES и CFZombieLevel = 16), и программа работает нормально и не исключает никаких исключений.Проблема с повторным использованием и зомби
Что дает? Я думал, что зомби просто сказали бы мне, что я doofus ... не исправить.
#import "AppController.h"
@implementation AppController
-(IBAction)countCharacters:(id)sender {
//did a button do this?
if(![sender isKindOfClass:[NSButton class]]) {
NSLog(@"%@ is not a button", sender);
return;
}
//proceed
NSString *userString = [textField stringValue];
NSNumber *count = [NSNumber numberWithInt:[userString length]];
NSString *outputString = [NSString stringWithFormat:@"'%@' has %@ characters.",
userString, count];
//[userString release];
//[count release];
[labelField setStringValue:outputString];
//[outputString release];
}
@end
Почему вы не меняете (id) отправителя (NSButton *) отправителя в - (IBAction) countCharacters :? Таким образом, вам не придется проверять. Если это не только вызвано через GUI. – zneak
@zneak; это не имеет смысла. Метод действия - это всегда '- (IBAction) селектор: (id) отправитель. И проверяете ли вы полностью ортогонально, как работает цель/действие. – bbum
@bbum; Это имеет смысл. Явное указание того, какой объект вы ожидаете отправить, делает невозможным в Interface Builder присвоить действие любому другому типу объекта. Очевидно, что он хочет. Я просто дважды проверял, если бы я сказал что-то совершенно глупое, и он ведет себя точно так, как я его описываю. – zneak