iOS,如何禁用有关弃用方法的CERTAIN警告

时间:2013-10-11 14:56:44

标签: ios macros warnings deprecated

我正在从iOS6迁移到iOS7,但我希望保留适用于iOS6的代码,因此我的代码如下所示:

if (isiOS7orAbove) {
    sizeios7 = [text boundingRectWithSize:CGSizeMake(TEXTVIEW_WIDTH, 9999)
                options:NSStringDrawingUsesLineFragmentOrigin 
                attributes:nil context:nil];
}else{
    size = [text sizeWithFont:[self cellFont]
            constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH, 9999)
            lineBreakMode:NSLineBreakByWordWrapping];
}

但Xcode一直警告我,[text sizeWithFont...]已被弃用。现在,因为我确信我的标志isiOS7orAbove可以处理iOS版本所以我不需要警告,因为我已经处理过它。

我不想真的禁用有关弃用方法的警告,我想要的是告诉Xcode我已经处理过它,应该适用于较低版本的iOS。

那么只能删除[text sizeWithFont ...]的警告吗?

我想一个叫宏的东西应该这样做,比如#IF IOS6,但我不确切知道怎么做。

2 个答案:

答案 0 :(得分:5)

理论上,您可以使用#pragma clang diagnostic指令抑制一段代码的诊断。不过,我自己从未尝试过。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
size = [text sizeWithFont:...
#pragma clang diagnostic pop

答案 1 :(得分:0)

不是你问题的答案,

但为什么不使用

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context

(来自NSAttributedString)

“适用于iOS 6.0及更高版本。”你只需要在使用之前将NSString转换为NSAttributedString