[error]-[NSPlaceholderString initWithString:]: nil argument'

2013. 5. 28. 17:59제2외국어/에러일지.

-[NSPlaceholderString initWithString:]: nil argument'

아우..

오늘은 Crash 의 날이네요. 벌써 2번째 ;;


첫번째 Crash에서 기운을 다 써서 이번엔 Debug하지 않고, 바로 검색을 해봤습니다.


-[NSPlaceholderString initWithString:]: nil argument'
이유 : NSString 을 nil로 초기값을 줄 때 생긴 문제

보통 NSString 을 초기화 할 떄 다음과 같은 3가지 방법을 사용.

1. NSString *str = @"";

2. NSString *str = [[NSString alloc] initWithFormat:@"%@",변수]; 

3. NSString *str = [[NSString alloc] initWithString:변수];


// 1번 방법
NSString
*str = @"";
NSLog(@"str1 : %@",str);

// 2번 방법
str = [
NSString stringWithFormat:@"%@",nil];
NSLog(@"str2 : %@",str);

// 3번 방법
str = [
NSString stringWithString:nil];
NSLog(@"str3 : %@",str);


다음과 같이 3번째 방법을 사용할 때 Crash가 발생하였습니다.
2번째 방법은 (null)로 표현이 되는군요.  
( 즉 [str isEqualToString:@""] 로 판단하지 못 합니다. 대신 str!= nil 로는 판단이 됩니다. , 1번과 반대입니다. )



[ 참고 : 사이트 

PS.
참고한 사이트에서는 
stringWithString stringWithFormat 을 사용하는게 좀 더 안정적이이라는 결론을 내렸는데
그냥 
stringWithFormat이 모든 부분에서 사용이 가능하기에 편하게 사용하면 된다는 결론이 맞는것 같습니다.