ちょっと考えれば当たり前なのですが地味にハマったのでメモ
プロトコル宣言中に@propertyでプロパティを宣言することが出来ます。
@protocol MyPropertyProtocol <NSObject>
@property (nonatomic) NSString *myProperty;
@end
で、このプロトコルを利用して宣言したプロパティを利用しようとするとunrecognized selectorでクラッシュします。
self.myProperty = @"プロパティ";
なのでどうするかというと@synthesizeを使います。
@synthesize myProperty = _myProperty;
※オートシンセサイズに合わせてアンダースコア付きの変数にしています。(ikesyoさんありがとうございます。)
自分でアクセサメソッド実装したりしてめんどくさいことしてましたがこの1行で解決しました。
Modern ObjCで@synthesize書かなくても良くなったので存在を忘れかけてましたがまだ使いドコロがあったんですね。