【发布时间】:2014-08-11 07:18:22
【问题描述】:
我正在为我的 ObjC 类编写一个 Swift 扩展。尽管我的代码可以完美编译和运行,我收到一堆 Xcode 警告(每个Swift 方法):
"Method definition for 'foo_method:' not found"
"Method definition for 'bar_method:' not found"
"Method definition for 'baz_method:' not found"
重现 Xcode 消息非常简单。我用四行非样板代码制作了这个演示项目:
Objective-C(NSView 的子类)
// Subclass_of_NSView.h
#import <Cocoa/Cocoa.h
@interface Subclass_of_NSView : NSView
@end
// Subclass_of_NSView.m
@implementation Subclass_of_NSView
- (instancetype)initWithFrame:(NSRect)frame
//______________^ WARNING: Method definition for resizeSubviewsWithOldSize: not found
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
@end
Swift(扩展 Obj-C 子类)
// Extension_of_Subclass.swift
import Foundation
extension Subclass_of_NSView {
override func resizeSubviewsWithOldSize( old_bounds_size:NSSize ) {
}
}
桥接头
// Demo_Project-Bridging-Header.h
#import "Subclass_of_NSView.h"
我猜如果我这样做,警告就会消失:
a) 在我的 ObjC 类的 .m 文件中创建一堆虚拟方法。
b) 在我的 Swift 扩展中,扩展我的 ObjC 类的超类。
我不喜欢这两种解决方案。
有没有更好的方法让编译器满意?
【问题讨论】:
-
你应该发布一些我认为的代码
-
我截了一些截图。代码本身可能会令人困惑,因为可能涉及 4 个文件。
-
我认为这是一个应该报告的错误
-
我做了你说的一切,但无法重现问题:这个小演示应用程序编译得很好,没有任何警告。
-
@matt,它编译时可能没有实际的错误,但是我尝试过的两台机器(两个不同的项目都没有)编译时没有警告。我可以运行我的应用程序,但是看到几十个警告会让人分心 - 特别是如果有一个合法的警告隐藏在其中。
标签: objective-c swift