【问题标题】:Uncaught exception NSInvalidArgument Exception does not respond to forwardInvocation未捕获的异常 NSInvalidArgument 异常不响应 forwardInvocation
【发布时间】:2016-03-24 17:09:23
【问题描述】:

我正在尝试学习 Objective-C 并编写了一个小程序,但我无法编译它。我收到以下错误消息。

未捕获异常 NSInvalidArgumentException,原因:GSFFIInvocation: Class 'ClassA'(class) does not respond to forwardInvocation: for 'alloc'

代码如下

#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;
}

我做错了什么?

【问题讨论】:

  • 在哪一行抛出异常?

标签: objective-c gcc gnustep


【解决方案1】:

如果您不使用 Xcode,请务必适当地标记您的问题。

您正在使用的NSObject 的实现似乎没有实现+alloc,或者运行时可能由于链接问题而没有看到所述方法的实现。

即您的安装中出现了问题或不符合标准。

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多