taoru's memo

Objective-c,cocos2d,など開発についてのメモ(andoroidも少しだけ)

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無いよってエラーが出たら疑ってみよう。

QLOOKアクセス解析