Obj-c 扩展在 swift 中不起作用

Obj-c extension does not work in swift

尝试在我的 swift 项目中使用 obj-c 扩展:

UIBezierPath+hello.h

#import <UIKit/UIKit.h>

@interface UIBezierPath(hello)

- (void)hello;

@end

UIBezierPath+hello.m

#import "UIBezierPath+hello.h"


@implementation UIBezierPath(hello)

- (void)hello
{
    NSLog (@"hello hello");
}

@end

桥接-Header.h

#import "UIBezierPath+hello.h"

斯威夫特

let helloPath = UIBezierPath()
helloPath.hello()

它确实构建并且它确实看到了 hello 方法。但它确实粉碎:

-[UIBezierPath hello]: unrecognized selector sent to instance 0x7d2116d0 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBezierPath hello]: unrecognized selector sent to instance 0x7d2116d0'

好像不能识别实现。 可能它不起作用,因为我很笨:) 自定义 obj-c 类在 swift 中工作。只有扩展给我这个问题

谢谢大家

那可能是你在项目中添加"UIBezierPath+hello.m"时忘记勾选"Target"复选框,导致文件没有被编译链接 到可执行文件。

在文件检查器中添加 "Target Membership" 应该可以解决问题。