は、いくつかのクラスの次の実装検討します。どのようにすることができanotherClass
サブクラスをobj-cのスーパークラスのプロパティに設定するにはどうすればよいですか?
@implementation anotherClass
@synthesize myObj;
...
//All of the code that uses the myObj property...
...
@end
の3つの異なるクラスの
.hファイルの実装
//superClass.h
...
@interface superClass
//Insert useful code
@end
//subClass.h
...
@interface subClass : superClass
//Insert useful code
@end
//Another class that uses various sub-classes of superClass
@interface anotherClass
{
superClass* myObj;
}
@property (strong, atomic) superClass* myObj;
@end
.mファイルの実装をsubClass
のインスタンスをプロパティanotherClass.myObj
のインスタンスに設定しますか?
具体的には、UIViewController
というプロパティを定義したいと思います。複数のサブクラス化されたUIViewControllerがあり、iOSアプリケーション内の特定のプロパティにそれらを入れ替えることができる必要があります。
子供のUIViewControllerの1つをUIViewController
プロパティに設定しようとするたびに、アプリがクラッシュします。しかし、子クラスの1つのインスタンスになるようにプロパティを再定義し、サブクラスをインスタンス化すると、完全に機能します。私は本当にこれらのコントローラを入れ替える能力が必要です。これどうやってするの?
UPDATE
まあ、これを見てきたすべての人に謝罪。明白な答えを得た後、関連するすべてのコードを書き直すことにしました。別の名前の新しいプロパティを作成し、割り当てコードをすべてコメントし、新しいプロパティを指すように書き直しました。それはちょうどそれと同じように動作します。なぜこれが最初に機能しないのか分かりませんが、今のように動作しています。しかし、なぜ私のアプリがクラッシュしたのか、まだ明確ではありません。
スーパークラス型変数へのサブクラスの割り当ては完全に合法であり、問題を引き起こすことはできません。それはUIKitで_強制されています。割り当ての前と後に、クラッシュについての詳細や、オブジェクトで何をやっているのか詳細を投稿してください。 –
ありがとうジョシュ(そしてカレブ)私は答えとしてカレブの応答をマークします。私はこれがうまくいくと思っていたので、何が起こっているのか分からず、迷子にならないだろうから。私はコードをもっと使いこなし、別の質問を定式化できるかどうかを見ていきます。 – RLH