源码

Swift趣闻–同名就是伤害

一个无解的问题
一个不是问题的问题
一个值得好好思考的问题

1. 背景

随着swift版本迭代到4.1,越来越多的公司已经开始swift和OC的混合开发,或者swift的重构,或者新项目的swift使用。所以我觉得有必要,在项目中添加使用swift了,不然被时代淘汰了。
当时感触最深的还是,常用的OC第三方库已经停止更新,或者更新缓慢。加上swift第三方库的完善并且版本更新快。
果断搞起,先混编吧。学习了一遍swift4.1语法.

2. DispatchQueue无法使用

写着swift感觉就像回到了大学时代,满怀激动。一切都很顺利,很流畅,很简洁,很多警告。_ !!^^ !!^^ !_!(心情是这样的)
突然碰到需要延迟处理时,碰到了“Use of unresolved identifier 'DispatchQueue'”的错误提示。

DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { 
           self.commitBtn.isEnabled = true
        }

查询了千山万水,但是发现没有解。

3. 解决方法

最后的最后等我查看到DispatchQueue的module名称为Dispatch的时候,我突然有了一个想法。这个名字为何那么的熟悉。是的,项目Target名称也叫Dispatch。
赶紧新建一个项目,跑了下DispatchQueue.main.asyncAfter代码,God,执行是成功的。是的,我猜的没有错。同名就是伤害啊。
默默的新添加Target名称为Dispatcher,将之前Target为Dispatch的移除,修改Info.plist和Pod,打包工具。然后编译成功后,再来执行

DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
            self.commitBtn.isEnabled = true
        }

运行成功。

4. 总结

系统或第三方用到的Module名称,千万不要与我们的Target同名,不然会碰到神都无法解的问题。阿门。

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/swiftquwen-tongmingjiushishanghai.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9月 12, 2018 at 06:46 下午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复