>320
とりあえず1点だけ。
初期化時以外に initWithArea: を呼んでますがこれはよくないです。
setArea: を作ってやるのが良いでしょう。
initWithArea: の時もself に対して setArea: を呼べばいいだけです。

やっぱりもう一点(w
共通部分は可能な限りスーパークラスに持たせましょう。
-(void)setArea:(NSRect)area {} // 何もしない 必要ならサブクラスがオーバーライド
-(id)initWithArea:(NSRect)area
{
if( (self=[self init]) ) { // super じゃなく self
[self setArea:area];
}
return self;
}
をスーパークラスが実装していたとすると...
って言うのもありです。

>325さんのキャストの警告回避はC++的には
static_cast<int>(val)
ですね。(int)val より安全になりますしね。

ガンガッテ!