使用不推荐的方法时,在Xcode中显示自定义警告

时间:2013-02-11 12:43:25

标签: xcode llvm

重构旧代码,我想更改以下方法:

- (id)initWithFrame:(CGRect)frame
{
     // original logic
}

为:

- (id)initWithFrame:(CGRect)frame andDelegate:(id<myDelegateProtocol>)delegate
{
     // original logic

    if(delegate)
    { 
        _delegate = delegate; 
    }
}

为了确保没有依赖代码中断,我更新原始方法以引用旧方法,如下所示:

- (id)initWithFrame:(CGRect)frame
{
     return [self initWithFrame:frame andDelegate:nil];
}

但是,如果有人仍在使用该原始方法,我希望Xcode发出警告(类似于iOS中的方法被弃用)。理想情况下,如:

- (id)initWithFrame:(CGRect)frame __warning__(@"This method has been replaced to ensure that you set the delegate. Please update your code.");
{
     return [self initWithFrame:frame andDelegate:nil];
}

请注意,这些弃用可能会在新版本iOS发布之前发生。

2 个答案:

答案 0 :(得分:3)

在界面文件中,执行以下操作:

- (id)initWithFrame:(CGRect)frame__attribute__((deprecated("Use initWithFrame: andDelegate")));

答案 1 :(得分:2)

为了完整性,我还要补充一点,如果你想使用特定方法阻止某人,你可以使用“不可用”标志,例如

- (id)initWithFrame:(CGRect)frame__attribute__((unavailable("Use initWithFrame: andDelegate")));

这会引发错误,而不是警告。

您可以在clang.llvm.org

找到更多信息