我正在从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
,但我不确切知道怎么做。
答案 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