さて、これは非常にばかげた初心者の質問かもしれませんが:
ClassAがあります。これは、ClassBから子オブジェクトを作成し、それをインスタンス変数に割り当てます。詳細:ClassAは、指定された初期化子でClassBを割り当てて初期化し、それをchildObjectインスタンス変数に割り当てます。ヘッダーは次のようになります。
#import <Foundation/Foundation.h>
#import "ClassB.h"
@interface ClassA : NSObject {
ClassB *childObject;
}
@end
次に、ClassBのヘッダーがあります。ClassBにはClassAへの参照が必要です。
#import <Foundation/Foundation.h>
#import "ClassA.h"
@interface ClassB : NSObject {
ClassA *parentObject;
}
- (id)initWithClassA:(ClassA*)newParentObject;
@end
ClassAオブジェクトがClassBから子オブジェクトを作成すると、ClassAオブジェクトはClassBオブジェクトの指定された初期化子を呼び出し、そこで自分自身(自分自身)を渡す必要があります。
何かがおかしいと感じますが、今のところ正確にはわかりません。私が知っていると思うのは、これは機能しないということです。彼らはお互いを輸入することはできません。コンパイラは、「エラー:「ClassA」の前の構文エラー」とだけ言っています。ClassAをインポートするためのimportステートメントを削除し、ClassA * parentObjectインスタンス変数を削除し、(ClassA参照を取得する)指定イニシャライザーを削除すると、機能します。
さて、これが私が達成したいことです(これが重要な場合):UIScrollViewでいくつかの非常に特別で複雑な動作が必要です。そこで、サブクラス化することにしました。主要部分はデリゲートメソッド内で行われるため、UIScrollViewのサブクラス用に「ジェネリック」デリゲートオブジェクトを作成することにしました。次に、UIScrollViewサブクラスは、その特別なデリゲートオブジェクトを自動的に作成し、それをそのデリゲートプロパティに割り当てます。デリゲートオブジェクト自体は、その親であるカスタマイズされたUIScrollViewへの参照を必要とします。これにより、そのスクロールビューのサブビューにアクセスできるようになります。しかし、とにかく、この問題を解決するためのより良い方法があるとしても、相互に必要な2つの「相互依存」オブジェクトを使用してその方法でそれを実行する方法を知りたいと思います。
どんな提案でも大歓迎です!