NSCFStringエラーでハマった(凡ミス)
NSStringをpropertyにセットして、いざ使おうとすると何もエラーを吐かずにクラッシュして困った。
凡ミスだったのでメモを残しておく。
breakpointをセットして、クラッシュ該当箇所でログを吐いてみたら、
該当文字列のクラスがNSCFStringになっていた。
(lldb) po [self.hogeString class] $0 = 0x042d68e4 __NSCFString
もう全然解決できなくて、ググってもいまいち原因が分からず困り果てた。
NSCFStringって何だよ!ということでそっちから調べたところ
ダイナミックObjective-Cの記事に説明があった!
ダイナミックObjective-C 32 抽象クラスとクラスクラスタ
これに加えて、クラスクラスタの面白いところは、サブクラスの存在が完全に隠されており、その選択がNSStringに任されていることである。実際、Cocoaプログラミングの初心者は、NSCFStringやNSPathStore2の存在にまったく気付かないだろう。非常にスマートな手法といえるだろう。
すいません、初心者でした。
後でちゃんと記事読んでみよう。
ーーーー
原因は、propertyの属性を (nonatomic, assign)にしていたという凡ミスでした。
(nonatomic, copy) に変更して解決。
NSStringクラスのpropertyで、NSCFStringにはそんなselector無いよってエラーが出たら疑ってみよう。