How do I flag a method as deprecated in Objective-C 2.0?
IMHO, it's easier to write __deprecated:
- (void)myDeprecatedMethod __deprecated;
- (int)methodNameDeprecated:(int)param __deprecated;
Works too on classes
__deprecated
@interface MyDeprecatedClass
// ... some properties and methods ...
@end
If you want to give additional message with the deprecation flag, you can use following flags.
@property (strong, nonatomic) NSString *catName
__deprecated_msg("use name instead.");
// -- Or --
@property (strong, nonatomic) NSString *catName
DEPRECATED_MSG_ATTRIBUTE("use name instead.");
// -- Or --
@property (strong, nonatomic) NSString *catName
__attribute__((deprecated("use name instead.")));
Using above mentioned flags, you can tell why you are deprecating or what is the method developer should use in future.
To mark a method as deprecated, use __attribute__((deprecated("Your message goes here")))
A practical example, from Mantle
@interface NSValueTransformer (UnavailableMTLPredefinedTransformerAdditions)
+ (NSValueTransformer *)mtl_externalRepresentationTransformerWithModelClass:(Class)modelClass __attribute__((deprecated("Replaced by +mtl_JSONDictionaryTransformerWithModelClass:")));
+ (NSValueTransformer *)mtl_externalRepresentationArrayTransformerWithModelClass:(Class)modelClass __attribute__((deprecated("Replaced by +mtl_JSONArrayTransformerWithModelClass:")));
@end
Deprecation Syntax
Syntax is provided to mark methods as deprecated:
@interface SomeClass
-method __attribute__((deprecated));
@end
or:
#include <AvailabilityMacros.h>
@interface SomeClass
-method DEPRECATED_ATTRIBUTE; // or some other deployment-target-specific macro
@end