NSString에서 rangeOfStrting을 사용할 때 nil argument 관련 크래쉬가 발생할 때가 있다.
아래 상황을 살펴보자.
- (void)test {
NSString* baseStr = @"test";
NSString* rangeStr = nil;
NSRange range = [baseStr rangeOfString:rangeStr];
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:baseStr];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];
}
위와 같이 rangeOfString 에 nil 값을 가진 변수가 사용되면 아래와 같은 크래시가 발생한다.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSCFConstantString rangeOfString:options:range:locale:]: nil argument' |
따라서 rangeOfString 함수를 사용할 경우에는 nil 값을 가진 변수를 사용하지 않도록 주의가 필요하며, 변수에 들어오는 값을 알 수 없는 경우에는 아래와 같은 예외처리로 크래시를 막을 수 있다.
- (void)test {
NSString* baseStr = @"test";
NSString* rangeStr = nil;
if ([rangeStr length]) { // string 이 있을때 플로우를 타도록 예외처리 추가
NSRange range = [baseStr rangeOfString:rangeStr];
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:baseStr];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];
}
}
반응형
'Programming > iOS - ObjC' 카테고리의 다른 글
MPMoviePlayerController - 오디오 스트리밍 재생 (0) | 2014.12.04 |
---|---|
Email 주소 유효성 검사 (0) | 2014.12.02 |
UIWebView - POST request 사용 및 Header 넣기 (0) | 2014.12.02 |
[Deprecated-iOS7] UITextAttributeTextColor (0) | 2014.12.02 |
[APNs, Notification] 알림 설정 (iOS8 SDK 변화) (0) | 2014.10.16 |
UINavitaionController - 생성, 이동 (0) | 2014.06.12 |
CLLocationManager - 간단한 예제 (0) | 2014.06.10 |
NSDate - 현재날짜와 시간 포메팅 (0) | 2014.06.10 |
UITextView - 내용추가하고 자동으로 스크롤 내리기 (0) | 2014.06.10 |
NSArray내의 NSDictionary 그룹별로 추출하기 (2) | 2011.01.27 |