何にはまったかって言うと、initを実装するときに、Javaのコンストラクタと同じノリで実装して痛い目見たって話です。 ちょっと長くて読みにくくなっちゃいますが、はまったコードのサンプルを全文載せます。 なお、このコード自体は「Objective-Cってスーパークラスのインスタンスをサブクラスにキャストできるんじゃないのか?」と思って試したコードです。 そしたら、その検証以前にこの投稿の主題で言っている痛い目をみたわけです。 では、まずは思ったように動かなかったのがコレ。 #include <Foundation/NSObject.h> #include <stdio.h> // testForSuper2Sub.m // To compile this program in your console. // Put this command // gcc testForSuper2Sub