我有4 个NSString
。从length
逻辑上讲,这应该有效,并且expYear
确实有效,但是expMonth
会引发越界异常?
expYear = [expDate substringWithRange:NSMakeRange(0, 2)];
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];
我有4 个NSString
。从length
逻辑上讲,这应该有效,并且expYear
确实有效,但是expMonth
会引发越界异常?
expYear = [expDate substringWithRange:NSMakeRange(0, 2)];
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];
范围是 alocation
和 a length
,而不是开始和结束位置。
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
因此,您的起点位置2
和长度3
超出终点。
根据正确的规格更改范围。
范围并不意味着从 2 到 3,而是说从 2 开始并进入下一个 3 个索引,所以在这个例子中你最终得到 2-5,所以这条线超出了范围:
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];