>  Q&A  >  본문

ios - OC为什么类不写实现,突然报了的编译错误?

昨天的测试工程,代码来自斯坦福CS193P,一开始一点问题没有。今天试试selector 突然就编译不了了。即使注释的就剩ALLOC的那一行代码。究竟是什么问题啊。
奇怪的是补上实现后,又不报错了。

#import <Foundation/Foundation.h>
@interface Vehicle :NSObject
- (void)move;
@end

//!!!!添加实现后build succeeded!!!!
//@implementation Vehicle
//
//@end

@interface Ship : Vehicle
- (void)shoot;
@end


//@implementation Ship
//- (void)shoot {
//    NSLog(@"Shoot!");
//}
//@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //-------------code 2---------------
        Ship *s = [[Ship alloc] init];
        [s shoot];
        [s move];
        
        //Vehicle *v = shipWithShoot;
        //[v shoot];
        
//        id obj = shipWithShoot; //s is Ship
//        [obj shoot];
        //obj = v;    //v is Vehicle
//        [obj shoot];
        
        //-------------code 4----------link 2
//        if ([obj respondsToSelector:@selector(shoot)]) {
//            [obj shoot];
//        }

//
//        if ([obj isKindOfClass:[NSString class]]) {
//            NSString *str = [(NSString *)obj stringByAppendingString:@"xyzzy"];
//        }
        //-------------code 3---------------
        ...
    }
    
    return 0;
}

伊谢尔伦伊谢尔伦2764일 전533

모든 응답(3)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-17 17:23:50

    저는 이런 상황을 겪어본 적이 없습니다. 개인적으로는 반복적인 편집으로 인해 발생하는 것이 아닐까 생각합니다. 구체적인 세부 사항 및 해결 방법은 이 블로그를 참조하여 문제에서 참조된 _OBJC_CLASS_$_certain 파일 이름"을 완전히 해결할 수 있습니다. 도움이 되길 바랍니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 17:23:50

    물론 헤더 파일은 기호만 선언합니다. 기호만 있고 구현이 없으면 링크할 때 기호를 찾을 수 없다고 보고합니다

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 17:23:50

    찾을 수 없다는 메시지가 뜹니다. 구현을 추가하면 문제는 없을 것입니다.

    회신하다
    0
  • 취소회신하다