以下のように、スーパークラスで readwrite 属性のプロパティをサブクラスで readonly にしたいのですが、

@interface SuperClass : NSObject
@property (strong, nonatomic, readwrite) NSObject *variable;
@end
@interface SubClass : SuperClass
@property (strong, nonatomic, readonly) NSObject *variable; // 注意が出る
@end

 サブクラスのほうで注意が表示され、

Attribute 'readonly' of property 'variable' restricts attribute 'readwrite' of property inherited from 'SuperClass'.

 サブクラスの実装でアクセスしてみると、やはり書き込みできてしまいます。

@implementation SubClass
- (void)method {
  self.variable = [[NSObject alloc] init]; // 書き込みできてしまう
}
@end

妥協案

 そのため、現在妥協案として以下のようにサブクラスではプロパティのセッタを無効にし、ドット記法でアクセスされた時のためにセッタの実装も空にしています。

@interface SubClass : SuperClass
- (void)setVariable:(NSObject *)variable __unavailable;
@end

@implementation SubClass
- (void)setVariable:(NSObject *)variable {
  return;
}
@end

 この動作を Objective-C の言語的に、スマートに実現できないでしょうか? この方法だと readonly にしたいプロパティへのドット記法での書き込みに対して何の警告も出せないのが不親切で困っています。

環境

Xcode 5.1.1 / iOS 7.1 SDK