IOS Objective-Cヘッダーファイルで非推奨として関数にフラグを立てるにはどうすればよいですか?
関数のどこかに貼り付けることができるキーワードがあると思いますか?
AppleのAPIで見られる動作と同様に、廃止された関数を誰かが使用しようとした場合に、コンパイラの警告が生成されるようにしたいと思います。
ティムの答えは実際にはコンパイラの警告を生成します。他のバージョンは単なるコメントであり、w.r.tには影響しません。コンパイラ。
/usr/include/AvailabilityMacros.hを見ると、Appleがこれを行う方法がわかります。そのヘッダーは__attribute__((deprecated))
と__attribute__((unavailable))
を使用します。 APIが存在するが非推奨であるか、または実際にOSから削除されているかどうか。
__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をサポートします)。
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 */
HeaderDocマニュアル に従うこともできます。この構文が使用される場所:
/*!
* @abstract Foo is good for bar.
*
* @deprecated in version 2.0
*/