加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 在Swift中,未来的新API将在App Store的现有应用程序中被

发布时间:2020-12-14 19:08:06 所属栏目:百科 来源:网络整理
导读:例如,在Objective-C中,如果Apple向UIView添加了名为method1的新方法,那么已经发布到App Store并使用以下代码的现有应用程序可能会崩溃或出现意外行为: // Objective-C@interface MyView : UIView- (void)method1;@end// Swiftclass MyView : UIView { func
例如,在Objective-C中,如果Apple向UIView添加了名为method1的新方法,那么已经发布到App Store并使用以下代码的现有应用程序可能会崩溃或出现意外行为:

// Objective-C
@interface MyView : UIView
- (void)method1;
@end

// Swift
class MyView : UIView {
    func method1() {
        // do something
    }
}

但是在Swift中,要覆盖一个方法,您需要一个override关键字来防止意外覆盖.
如果覆盖没有override关键字的方法,编译器将生成编译时错误.

如果Apple在下一个iOS版本中添加新的API方法,并且我的应用程序或您的应用程序使用的名称与新API名称相同的方法,将会发生什么.

在Swift中,现有应用程序(如Objective-C)中的方法是否会覆盖新的API方法?
或者由于Swift的显式覆盖功能(覆盖关键字),新的API不会影响现有的同名用户定义方法?

解决方法

如果您的应用已经构建并上传,则不会出现问题.

但是,如果您尝试为新更新重新构建应用程序并且运气不好,他们将新的Api方法命名为对象方法的相同名称,很可能只有在您使用方法的地方时才会出现错误你不使用正确的标识符,如不调用self.method1()并只调用method1(),你的对象继承自UIViewController,它恰好具有新的Method1.

除此之外,我不会担心这类问题的发生,至少我没有遇到像这样的问题我已经为iOS编程了3到3年.

//Lets assume UIViewController has a new Method in the Api now which 
//they updated called   Method1

class MyViewController :UIViewController {


  init {
     //When you try to re-build your app this line of code right here would complain
     //because of ambiguity,two methods called the same one from your 
     //Parent Class and your own Class.
     //method1()

     //"super.method1()"  or code below to solve the ambiguity issue.
     self.method1()
  }

//Added this just because I happen to use UIViewController.
 override viewDidLoad() {
     super.viewDidLoad()
 }




  //Your own method without Override,since you want to use your own method. 
  func method1() {
    //Does something important
  }


}

更新根据您的评论:

1)是否有关于它的文档或您是否在Swift中自行测试过?

我自己测试过,因为我在App Store中有应用程序.因此,无论已经上传的是什么,代码都将正常工作,因为您上传的应用程序使用当前正在运行的Apis和您的类预打包Frameworks.
不,我没有看到有关它的文档,我知道它,因为我亲眼看到它.

2)如果UIViewController已经有func method1(),我想你不能定义没有override关键字的func method1()

多数民众赞成!假设APi已经有一个方法,你可以使用写入Override关键字来使用具有相同名称的该函数.但请记住,根据您的方案,您提到API在您已将项目上传到AppStore之后创建了具有该名称的方法.因此,在进行一些新的编码并尝试重建应用程序时,您只能看到它的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读