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" 应该可以解决问题。
尝试在我的 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" 应该可以解决问题。