Powiedzmy, że mam ramy, A, że dołączam w wielu projektach dynamicznie, dodając plik A.framework wewnątrz projektów.

Rozważ scenariusz w kodzie frameworka A:

struct Foo {    
  static let `default` = Foo()    
}

Teraz zmieniłem nazwę z default do shared:

struct Foo {    
  static let shared = Foo()    
}

Teraz, gdy aktualizujemy wersje Swift , jeśli zmieni się składnia, czasami pojawia się błąd, taki jak

"Nslayouttribute" został przeniesiony na "nslayoutconstaint.attribute"

W którym klikamy przycisk napraw wewnątrz tego błędu, a nazwa zmienia się automatycznie.

Chcę osiągnąć to samo, gdy robię trochę Zmiana nazwy lub Zmiana deklaracji funkcji w moim A.framework i wyrzuć go do aplikacji za pomocą go. Czy jest znany sposób na osiągnięcie tego samego?

2
user121095 6 styczeń 2020, 13:40

1 odpowiedź

Najlepsza odpowiedź

Możesz osiągnąć to samo zachowanie, używając @available atrybut.

struct Foo {

    @available(*, unavailable, renamed: "shared")
    static let defaults = Foo()

    static let shared = Foo()
}

Daje Ci dokładne zachowanie, jak pokazano tutaj:

Replace dialog


Uwaga: Możesz zrobić to samo z funkcjami, tylko musisz mieć taką samą liczbę parametrów.

struct Foo {

    @available(*, unavailable, renamed: "sharedFun(fName:lName:)")
    static func defaultFun(first: String, last: String) {}

    static func sharedFun(fName: String, lName: String) {}
}

Replace dialog - Function

7
Midhun MP 6 styczeń 2020, 11:17