模拟器编译通过,真机编译报错

在华夏项目里遇到一个很奇怪的bug,在基类HXViewController里面定义的成员变量,在子类HPContainerViewController里无法直接引用。而且是模拟器环境能够编译运行,而在真机环境下编译报错,说变量没有定义。我怀疑这个问题是xcode或者编译器的bug,如果在xcode里把编译器从默认的gcc换成LLVM,则此部分代码能够编译通过,但是其他部分报错。目前还不清楚是什么引起的这个问题,因为同一个项目的其他代码里,子类是可以直接引用父类的变量的。

绕过这个问题的方法是,在子类里面,需要引用父类变量的地方,不是直接写ivar,而是写成 self->ivar 这种语法。这是C语言访问一个struct对象指针内的成员变量的语法。因为Objective-C里面,class在编译的时候是转换成C语言的struct来表示的,Objective-C允许使用简写的方式,可以不写“self->”,编译器会自动补上。但是这个bug导致编译器没有自动补上完整的对象指针,所以需要在代码里面手工补全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值