Xcode不允许我将NSObject的init()函数用于UIView

时间:2018-11-15 16:55:08

标签: ios swift xcode

这可能与这个仍未解决的问题非常相似:Xcode 10 beta2: Cannot invoke initializer for type 'UIView' with no arguments

问题:

  

不能为没有参数的'UIImageView'类型调用初始化器

但是,请给我一个机会问这个问题。我有一个以前用Swift 4.0编写的项目,忽然Xcode不允许我使用UIView的{​​{1}}方法创建一个NSObject对象。突然之间。

我已经做了什么:

  1. 我转回正在执行的提交,男孩,项目仍然无法编译。
  2. 当然,我尝试编译其他项目,当然也编译了它们,同时使用init()构建了许多视图。
  3. 尝试搜索答案,但是上面链接的问题再次没有答案。
  4. 当前正在将该项目的项目设置与新项目的设置进行比较。

我想问和想知道的事情:

  1. 我需要知道,因为这很麻烦,为什么会发生这种情况。
  2. 这是Xcode中的配置错误吗?但是我有点怀疑,因为我已经切换到可以工作的提交,并且仍然存在编译时错误。

请不要告诉我使用UIView()构造函数,因为我有数百个UIView(frame: CGRect)代码和类似的代码。

我所知道的:

Where does UIView.init() come from?

  

请记住,UIView是Objective-C类,而Objective-C是   不是Swift。没有关于指定和便利的规则   初始化程序及其继承规则存在于Objective-C中-   一个事实,有时会在使用它们时造成重大麻烦   Swift中的类。也就是说,实际上,UIView的init()是   方便的初始化程序,调用init(frame:.zero)。

谢谢!

1 个答案:

答案 0 :(得分:0)

要结束此主题/问题,我将添加一个答案。

我不是解决这个问题的人。这个项目,如果没有在问题中提到,仅仅是一个远程/自由职业者的附带项目。实际上,即使上面也没有提到,我实际上是将该项目迁移到Swift 4.2。在此过程中,出现了这个问题。我没有费心将所有代码片段重命名为更新期间的重命名。长话短说,我放弃了这一任务,但公司中的某个人决定解决它。

解决方案是:先完成迁移。只需重命名Swift 4.2所需的所有内容,并更新Pod。而已! :)希望这对以后的人们有所帮助。