- nilであるオブジェクト(ポインター)のメソッドを呼び出す場合(おそらく誰かがそれを初期化するのを忘れたため)、Objective-Cの通常の動作は何ですか?ある種のエラー(セグメンテーション違反、nullポインタ例外...)を生成するべきではありませんか?
- これが正常な動作である場合、プログラムが実行時に何らかのエラー/例外を発生させるように(コンパイラを構成することによって)この動作を変更する方法はありますか?
私が話していることをより明確にするために、ここに例があります。
このクラスを持つ:
@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