2

我正在从 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但我不知道具体是怎么做的。

4

2 回答 2

5

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

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
size = [text sizeWithFont:...
#pragma clang diagnostic pop
于 2013-10-11T15:03:43.707 回答
0

不是真的回答你的问题,

但你为什么不使用

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

(来自 NSAttributedString)

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

于 2013-10-11T15:11:09.737 回答