web-dev-qa-db-ja.com

iOS Objective-Cヘッダーファイルで非推奨として関数にフラグを立てるにはどうすればよいですか?

IOS Objective-Cヘッダーファイルで非推奨として関数にフラグを立てるにはどうすればよいですか?

関数のどこかに貼り付けることができるキーワードがあると思いますか?

AppleのAPIで見られる動作と同様に、廃止された関数を誰かが使用しようとした場合に、コンパイラの警告が生成されるようにしたいと思います。

40
Nick Cartwright

メソッド宣言に属性を追加してみてください。

- (void)fooBar __attribute__ ((deprecated));

ここ から取得。

62
Tim

ティムの答えは実際にはコンパイラの警告を生成します。他のバージョンは単なるコメントであり、w.r.tには影響しません。コンパイラ。

/usr/include/AvailabilityMacros.hを見ると、Appleがこれを行う方法がわかります。そのヘッダーは__attribute__((deprecated))__attribute__((unavailable))を使用します。 APIが存在するが非推奨であるか、または実際にOSから削除されているかどうか。

7
Chris Parker

__attribute__((deprecated))の代わりに、_<cdefs.h>_で定義されたマクロを使用できます。

_- (void)fooBar __deprecated;
// Or better:
- (void)fooBar __deprecated_msg("Use barFoo instead.");
_

または、_<AvailabilityMacros.h>_で定義されているマクロを使用できます。

_- (void)fooBar DEPRECATED_ATTRIBUTE;
// Or better:
- (void)fooBar DEPRECATED_MSG_ATTRIBUTE("Use barFoo instead.");
_

Objective-Cを使用する場合は、最新のコンパイラを使用するため、違いはありません。したがって、Apple短い構文__deprecated_msg()を使用できます。ただし、使用する場合はクロスプラットフォームの場合はC、次にDEPRECATED_MSG_ATTRIBUTE()は最適な可用性定義を使用します(たとえば、GCC3.1をサポートします)。

5
Cœur

AppleのSFAuthorization.hから:

/*!
DEPRECATED: Use obtainWithRight:flags:error:
@method permitWithRight:flags:
@abstract Call permitWithRight to gain a right to have
          access to a privilege operation.
@param rightName The name of an authorization right.
@param flags Authorization flags.
*/
- (OSStatus)permitWithRight:(AuthorizationString)rightName
                      flags:(AuthorizationFlags)flags;

自動化されたドキュメントビルダーを使用していない場合は、次のようなもので十分だと思います。

- (void)doSomething;           /* DEPRECATED */
2
Georg Schölly

HeaderDocマニュアル に従うこともできます。この構文が使用される場所:

/*!
 * @abstract Foo is good for bar.
 *
 * @deprecated in version 2.0
 */
2
PeyloW