こんにちは、Cocoa の Objective-C で実行時の型チェックなどを実施する方法を探しています。
これは私のコードサンプルです。変数 'b' への間違った割り当てに関する実行時エラーが発生することが予想されました。しかし、そうではありませんでした。エラーなしでコンパイルおよび実行されました。
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray* a = [NSArray arrayWithObject: @"TEST"];
NSURL* b = [a objectAtIndex:0];
NSLog(@"Is this URL? %i", [b isKindOfClass:NSURL.class]);
[pool drain];
return 0;
}
// Console log after program execution:
// 2010-01-11 10:25:02.948 Type Checking[98473:a0f] Is this URL? 0
ランタイム型チェックがないことに驚きました。VB、C#、Java、ActionScript などのすべての高水準言語を使用したため... C などの低水準言語を知らないので、これが正しい方法かどうかわかりません... 理解するのは本当に難しかったです。コンパイル エラーや実行時エラーが発生しない理由。しかし、これは実際の C の世界では当然のルールとして理解できるようになりました。しかし、より強力な型チェックは私を大いに助けてくれます。デバッグセッションだけでも。これを行う方法はありますか?
また、実行時の型チェックがない場合、間違った型の値についてどのようなコーディングおよびデバッグ戦略を使用する必要がありますか? また、実行時の型チェックを行うか行わないかのトレードオフは何ですか?