Jam*_*man 139 iphone objective-c deprecated
我是开发相当大的iPad应用程序的团队的一员,因此我们创建了许多不同的类.问题是一些方法现在已经过时了,我不想简单地删除它们,因为我知道整个系统的某些部分使用这些方法......但是有更好的(更新的)变体可以使用相反(一些旧的实际上称为新的,但整体类接口变得混乱).
有没有一种方法可以将某些方法标记为折旧(如@deprecated
在Java和[Obsolete]
.NET中).
我看到Apple使用Availability.h并且有标签,例如
__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0);
Run Code Online (Sandbox Code Playgroud)
...这是唯一的方法(+ App Store是否可以安全地执行此操作?)或者是否有替代方案会在Xcode中标记警告?
Sha*_*men 159
提供语法以将方法标记为已弃用:
@interface SomeClass
-method __attribute__((deprecated));
@end
Run Code Online (Sandbox Code Playgroud)
要么:
#include <AvailabilityMacros.h>
@interface SomeClass
-method DEPRECATED_ATTRIBUTE; // or some other deployment-target-specific macro
@end
Run Code Online (Sandbox Code Playgroud)
Víc*_* B. 133
恕我直言,写__deprecated更容易:
- (void)myDeprecatedMethod __deprecated;
- (int)methodNameDeprecated:(int)param __deprecated;
Run Code Online (Sandbox Code Playgroud)
也适用于课程
__deprecated
@interface MyDeprecatedClass
// ... some properties and methods ...
@end
Run Code Online (Sandbox Code Playgroud)
uir*_*han 84
如果要使用弃用标志提供其他消息,可以使用以下标志.
@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.")));
Run Code Online (Sandbox Code Playgroud)
使用上面提到的标志,您可以了解为什么要弃用或者开发人员将来应该使用的方法.
onm*_*133 15
要将方法标记为已弃用,请使用__attribute __((不建议使用("您的消息在此处")))
来自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
Run Code Online (Sandbox Code Playgroud)
Ste*_*non 14
使用deprecated
属性:
- (int)bar: (int)x __attribute__((deprecated));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43953 次 |
最近记录: |