- Каково нормальное поведение в Objective-C, если вы вызываете метод для объекта (указателя), который равен нулю (возможно, потому что кто-то забыл его инициализировать)?Разве это не должно генерировать какую-то ошибку (ошибка сегментации, исключение нулевого указателя ...)?
- Если это нормальное поведение, есть ли способ изменить это поведение (путем настройки компилятора) так, чтобыпрограмма вызывает какую-то ошибку / исключение во время выполнения?
Чтобы было понятнее, о чем я говорю, вот пример.
Имея этот класс:
@interface Person : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
- (void)sayHi;
@end
с этой реализацией:
@implementation Person
@synthesize name;
- (void)dealloc {
[name release];
[super dealloc];
}
- (void)sayHi {
NSLog(@"Hello");
NSLog(@"My name is %@.", name);
}
@end
Где-то в программе я делаю это:
Person *person = nil;
//person = [[Person alloc] init]; // let's say I comment this line
person.name = @"Mike"; // shouldn't I get an error here?
[person sayHi]; // and here
[person release]; // and here