ios - OC为什么类不写实现,突然报了的编译错误?
伊谢尔伦
伊谢尔伦 2017-04-17 17:21:50
0
3
553

昨天的测试工程,代码来自斯坦福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;
}

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(3)
黄舟

私はこのような状況に遭遇したことがありません。個人的には、コンパイルの繰り返しが原因である可能性があると考えています。具体的な詳細と解決策については、このブログを参照して「_OBJC_CLASS_$_certain file name」を完全に解決してください。参照元: 問題です。お役に立てば幸いです

いいねを押す +0
Ty80

もちろん、ヘッダー ファイルはシンボルのみを宣言し、実装がない場合は、リンク時にシンボルが見つからないことが報告されます。

いいねを押す +0
刘奇

実装が見つからないと表示されますが、問題はコンパイラにある可能性があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート