<에러화면>
*** -[CFString respondsToSelector:]: message sent to deallocated instance 0x936dc10
이와 같은 에러 메세지를 본 적이 있는 분은 Zombie디버거 환경변수를 지정한 분일 것이다. (원인을 알수 없고, BAD_ACCESS 에러 메세지만 뜨면서 Fault되는 경우에 이 환경 변수는 상당한 도움이 된다)이와 같은 메세지의 원인은 메세지를 통해서 감을 잡을 수 있겠지만 메모리 관리와 관련된 것이다.
예를들면 release를 한 변수를 사용하려고 시도할때의 경우이다.
나와 같은 경우는 NSMutableString을 사용하면서 발생하였는데
간단히 NSMutableString 과 NSString의 가장 큰 차이점을 해당 변수를 선언후에 값 변경이 가능한가 혹은 가능하지 않은가이다. Objective-C에서 Mutable이 붙은 변수 클래스는 선언후에도 값을 변경하고자 할때 사용하는 클래스인 것이다.
NSMutableString이 가리키고 있는 값을 변경하기 위해서는
MS_변수1 = 변수2;
와 같은 식으로 변경을 시도하려는 경우 가장 큰 문제를 일으키는 것이다.
NSMutableString 은 값을 변경하기 위한 메소드를 가지고 있다.
setString:@"NSString"
반드시 이 메소드를 이용해야만 옳은 결과를 기대할 수 있다.