今更感が強いですが、Objective-Cはまだまだ現役です!
自動生成されるプロパティ
最近のObjective-Cの常識では、特別な処理を行わないプロパティの実装はコンパイラ任せにするのがよいとされています。
こんな感じですね。
# import <Foundation/Foundation.h>
@interface ClassA : NSObject
@property (copy) NSString *name;
@end
# import "ClassA.h"
@implementation ClassA
@end
ブレークポイントはどこに設定すればいいの?
自動生成されたプロパティへ誰がアクセスしたのかを確かめたい。そのためにブレークポイントを仕込みたいけどどこに仕込めばいいか分からない。仕方がないから自分でアクセサを書く。そんなことはないでしょうか?
実は何も書かなくてもここにブレークポイントが仕込めます。
プロパティの宣言部にブレークポイントを仕込めば、setter, getter双方にブレークポイントを仕込んだことになります。
問題解決ですね。
setterだけでいいんだけど...
setterを確認したいだけでgetterはどうでもいい。というか、いちいちgetterで止まられると頻繁に止まりすぎてデバッグにならない。
そんな時は、setterだけにブレークポイントを仕込みましょう。
ポイントはアクセサは自動ではあるけど実装されている、ということです。
このようにすればブレークポイントが仕込めます。
ブレークポイント ナビゲータのブレークポイントの追加から「 Add Symbolic Breakpoint...」を選び、
setterのシンボルを入力します。今の場合は-[ClassA setName:]
です。
まとめ
自動生成されるプロパティはちゃんと生成されている!