web-dev-qa-db-ja.com

メンバーを手動で非推奨にする方法

Objective-Cとは異なり、Swiftにはプリプロセッサがありません。したがって、クラスのメンバーを手動で非推奨にする方法はまだありますか?

私はこれに似たものを探しています:

-(id)method __deprecated;
150
Atomix

たとえば、Availableタグを使用できます。

@available(*, deprecated)
func myFunc() { 
    // ...
}

*はプラットフォームです(iOS、iOSApplicationExtension、macOS、watchOS、tvOS、* for allなど)。

introduceddeprecatedobsoletedrenamed、およびmessageであったプラットフォームのバージョンを指定することもできます。

@available(iOS, deprecated:6.0)
func myFunc() { 
    // calling this function is deprecated on iOS6+
}

Or

@available(iOS, deprecated: 6.0, obsoleted: 7.0, message: "Because !")
func myFunc() {
    // deprecated from iOS6, and obsoleted after iOS7, the message "Because !" is displayed in XCode warnings
}

プロジェクトが複数のプラットフォームをターゲットにしている場合、次のようにいくつかのタグを使用できます。

@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
    // ...
}

詳細は Swift documentation をご覧ください。

244
Axel Guilmin

SwiftおよびSwift 4以降、バージョン番号はオプションです。次のように入力できます:

@available(*, deprecated)
func foo() {
    // ...
}

または、メッセージを一緒に送りたい場合:

@available(*, deprecated, message: "no longer available ...")
func foo() {
    // ...
}
64
Yuchen Zhong

これを使用して、新しいfuncでエントリを自動修正できます。

@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
   // ...
}

func myNewFunc() {
   // ...
}

*の代わりに、Swiftバージョン番号にSwiftを使用できます。

非推奨の関数は警告を生成しますが、呼び出すことができます。 (警告)

廃止された関数は、完全に呼び出されることを防ぎます。 (エラー)

@available(Swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")

または、iOS、macOS、watchOS、tvOSなどの他のオプションを使用します...

3
Skyborg
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
    //
}

deployment target9.0であり、

1 .<ObsoletedVersion> == 10.0-warning

enter image description here

2 .<ObsoletedVersion> == 8.0-compile error

enter image description here

0
yoAlex5