2016-03-24 15 views
0

Objective-Cを学習しようとしていますが、小さなプログラムを作成しましたが、コンパイルできません。次のエラーメッセージが表示されます。未知の例外NSInvalidArgument例外がforwardInvocationに応答しません

キャッチされない例外NSInvalidArgumentException、理由:GSFFIInvocation:forwardInvocationに応答しないクラス 'にClassA'(クラス):次のように 'アロケーション'

コードがあるため、

#import <Foundation/Foundation.h> 

@interface ClassA : NSObject 
{ 
    int numA; 
} 
- (void) setNum: (int) n; 
- (int) getNum; 
- (void) print; 
@end 

@interface ClassB : ClassA 
{ 
    char charB; 
} 
- (void) setChar: (char) c; 
- (char) getChar; 
- (id) init; 
@end 

@implementation ClassA 
- (void) setNum: (int) n 
{ 
    numA = n; 
} 

- (int) getNum 
{ 
    return numA; 
} 
- (void) print 
{ 
    NSLog(@"ClassA num:%i ",numA); 
} 
@end 

@implementation ClassB 
- (void) setChar: (char) c 
{ 
    charB = c; 
} 

- (char) getChar 
{ 
    return charB; 
} 
- (void) print 
{ 
    NSLog(@"ClassB char:%c ", charB); 
    [super print]; 
} 
- (id) init 
{ 
    numA = 1; 
    charB = 'c'; 
    return self; 
} 
@end 

int main(int argc, char* argv[]) 
{ 
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; 
    ClassA* classA = [[ClassA alloc] init]; 

    [classA setNum: 10]; 
    //output: ClassA num: 10 
    [classA print]; 

    //polymorphism example 
    ClassA* classB = [[ClassB alloc] init]; 
    //prints: ClassB char: c ClassA num: 1 
    [classB print]; 

    [classA release]; 
    [classB release]; 

    [pool drain]; 
    return 0; 
} 

私は間違って何をしていますか?

+1

投げられた例外はどのラインですか? – Chris

答えて

1

Xcodeで作業していない場合は、質問に適切なタグを付けることが重要です。

使用しているNSObjectの実装には+allocが実装されていないか、リンク時にこのメソッドの実装が実行されていない可能性があります。

I.e.あなたのインストールでは、何かが壊れているか、または標準ではありません。

関連する問題