坑:OC里面写的属性和方法在swift里面无法访问

背景: 项目里面OC写的文件有个block属性要在swift里面访问, 但是在swift里面怎么都无法访问到属性, 然后把block属性加到oc的方法参数里面,连方法也不能访问了. 

思考: 第一直觉猜的是swift不支持oc的block了,但是仔细一想没有道理, 就新建了一个项目, 居然可以访问block属性和方法, 然后机智的想, 唯一的区别就是block的参数类型, 一个是自定义的, 一个是系统自带的, 然后一看oc的头文件, 用的是@class, 这个时候反应过来了, 多半是这里的问题, 把@class换成#import, 搞定可以访问了.

总结:@class是标识有这么个类但是没有类的详细信息, #import包含了类的完整信息, swift是桥接来访问oc文件的, 在桥接文件里面没有加别的import所以这个@class表示的类, 找不到, 这才是原因. 换成import后了, swift本来桥接了模板oc文件当然就可以访问了. 宁外测试发现虽然oc里面可以访问这个block和方法, 但是一旦要调用那个自定义类型的属性的时候依然是卵的, 所以还是要import那个文件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值