我有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)];