另一个问题是群里碰到的一个问题。当字符串为软连字符和划线字符开头一些组合时,计算长度时会出现负无穷大(-inf
)。如下面代码:
NSString *string = @"u00ADu0336u00ADu0336测试";
CGSize size = [string sizeWithFont:[UIFont systemFontOfSize:14]];
NSLog(@"%@",NSStringFromCGSize(size));
输出是:
2014-04-02 11:52:46.290 Test[3499:907] {-inf, 18}
而我们经常会根据计算出的文字大小来布局视图,如果你遇到这些字符串,而且没有对-inf
进行特殊处理的话,很有可能App就运行异常了。现在App有很多用户自行输入内容,如评论,信息等,这些很容易让一些恶意用户输入并上传这些bug文本,那么你的App就很容易异常了,所以还是有必要进行一些特殊处理的。这些特殊的字符串一般不会由本地App产生,而是用户产生,建议在服务器端处理。本地简单的处理方法就是Trim一下:
string = [string stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithRange:NSMakeRange(0xAD, 1)]];