__attribute__((deprecated))
ist die gcc-Methode (auch in clang unterstützt ), mit der eine Funktion / Methode als veraltet markiert wird. Wenn einer als "veraltet" markiert ist, wird eine Warnung ausgegeben, wenn jemand ihn anruft.
Die Syntax für normale Funktionen wäre
__attribute__((deprecated))
void f(...) {
...
}
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
und das von Objective-C-Methoden wäre
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
Sie können auch die gesamte Klasse als veraltet markieren
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Apple stellt auch den <AvailabilityMacros.h>
Header bereit, der die Makros DEPRECATED_ATTRIBUTE und DEPRECATED_MSG_ATTRIBUTE (msg) enthält, die auf die oben genannten Attribute erweitert werden, oder nichts, wenn der Compiler keine Attribute unterstützt. Beachten Sie, dass dieser Header außerhalb von OS X / iOS nicht vorhanden ist.
Randnotiz: Wenn Sie Swift verwenden, verwenden Sie das @available
Attribut, um einen Artikel zu verwerfen, z
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}
__attribute((deprecated(use method XXX instead)))
. Aber diese Syntax ist nur ab gcc 4.5 verfügbar, und die mit XcodeDEPRECATED_ATTRIBUTE
Sie können auch besser lesbare Definitionen verwenden
DEPRECATED_ATTRIBUTE
Es definiert in
usr/include/AvailabilityMacros.h
:#define DEPRECATED_ATTRIBUTE __attribute__((deprecated)) #define DEPRECATED_MSG_ATTRIBUTE(msg) __attribute((deprecated((msg))))
Beispiel für Objective-C- Methoden:
@interface MyClass : NSObject { ... } -(void)foo:(id)x DEPRECATED_ATTRIBUTE; // If you want to specify deprecated message: -(void)bar:(id)x DEPRECATED_MSG_ATTRIBUTE("Use baz: method instead."); ... @end
Sie können die gesamte Klasse auch als veraltet markieren:
DEPRECATED_ATTRIBUTE @interface DeprecatedClass : NSObject { ... } ... @end
quelle
DEPRECATED_MSG_ATTRIBUTE
eine Klasse als veraltet mit Nachricht markieren (wie UIAlertView)Swift 5.0
Verwerfen Sie alle Methoden / Klassen / Strukturen / Protokolle mit
@available
@available(*, deprecated, message: "Parse your data by hand instead") func parseData() { } @available(*, deprecated, renamed: "loadData") func fetchData() { } @available(swift, obsoleted: 4.1, renamed: "attemptConnection") func testConnection() { } @available(swift, deprecated: 4.0, obsoleted: 5.0, message: "This will be removed in v5.0; please migrate to a different API.")
Mögliche Parameter:
Weitere Informationen finden Sie im Apple-Dokument: Attribute
quelle
Wenn Sie C ++ 14 in Ihrem xcode-Projekt verwenden, können Sie auch das Attribut
[[deprecated]]
oder verwenden[[deprecated("reason")]]
, das jetzt Teil der Sprache ist.Siehe Dokumentation: http://en.cppreference.com/w/cpp/language/attributes
quelle
- FÜR SWIFT CODE:
Setzen Sie dies direkt über die Methode:
@available(*, deprecated: <#Version#>, message: <#Message#>)
Beispiel:
@available(*, deprecated: 11, message: "Use color assets instead") public struct ColorPaletteItemResource: ColorPaletteItemResourceType { ... }
quelle