NSRangeException
NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds
报错的超类属于NSRangeException -> NSRange
NSMutableRLEArrya 可变RLE数组越界
出错的堆栈最后指向了一个类方法
+ (CGFloat)getTheStringWidth:(NSString *)string setFont:(CGFloat)font
{
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string];
NSRange range = NSMakeRange(0, attrStr.length);
}
回到第一点的NSRangeException 可以定位到
NSRange range = NSMakeRange (x,x);
这一句代码
那么出现Out of bounds 的情况会不会可能是
1.前后值域都为0
2.或者是访问了一个野指针地址导致系统返回来了一串负数在64位下为-18446744073709551615 当作参数 string
+ (CGFloat)getTheStringWidth:(NSString *)string setFont:(CGFloat)font
{
string = @"";
string = nil;
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string];
NSRange range = NSMakeRange(0, attrStr.length);
本类计算文本高度算法通过对象传入的参数入参前就已经dealloc
+ (CGFloat)getTheStringWidth:(NSString *)string setFont:(CGFloat)font
{
if ([string isEqualToString:@""]) {
return 0;
}
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string];
NSRange range = NSMakeRange(0, attrStr.length); //设置字体
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。