2016-11-05 10 views
0

私はSTackOverflowで新しく、ObjectiveCで新しくなっています。私は多くの研究を行なったし、すでにのようないくつかの答えが見つかりました:Accessing objects of parent class in cocoa子から親オブジェクトにアクセスするCocoa/Objective C(OSX NOT IOS)

はまだ、私はそれを理解する上でいくつかの問題を持っていると私はコミュニティが理解するのを助けることができる願っています:

私はViewControllerをを持って、このコントローラのI内カスタムNSObjectクラスのインスタンスを作成します。私はオブジェクトインスタンスからViewControllerの(親)プロパティとメソッドにアクセスしたいと思います。

MYCustomViewController.h

@interface MYCustomViewController : NSViewController 

// Vars 
@property BOOL testBool; 

@end 

MYCustomViewController.m

@implementation MYCustomViewController 

- (void) someMethod 
{ 
    self.testBool = true; 
    _importController = [[MYCustomObject alloc] init]; 
    [_importController test]; 
} 

@end 

MYCustomObject.h

@interface MYCustomObject : NSObject 
- (void)test; 
@end 

MyCustomObject.m

@implementation MYCustomObject 

- (void)test 
{ 
    // HOW CAN I ACHIEVE THIS? 
    myParent.testBool; // --> true 

    // AND THIS? 
    [myParent someMethod]; 
} 

@end 

私はまだ勉強していますので、任意の(短すぎない)の説明は素晴らしいことです。 アイデア:オブジェクトインスタンシエーションに「自己」を送信しますが、どうすればよいですか? OSX 10.10、Xcodeの8、OSX 10.12

EDITをターゲット

:それはMYCustomObject上のプロトコルを使用して動作するようになりました。上記の考えに他の可能性はありますか?

+0

読む[尋ねる]および[FAQ]をチェックしてください。 Stackoverflowはフォーラムではありません。ソリューションを含めるために質問を編集しないで、回答を投稿します。また、「私はここに新しい...」とは言いません。 _all_質問にも同じ基準が適用されるので、新しいことは重要ではありません。ただの事実。そして私は非常に注意深くリンクした最初のページを読んでください。 – dandan78

+0

それを指摘してくれてありがとう。私は次回に質問を投稿します。 –

答えて

0

Objective-C(およびSwift)には、オブジェクトを作成したオブジェクトである「親オブジェクト」の言語概念はありません。 (クラスに親子関係があります。)モデルに親接続が必要な場合は、作成する親をinitメソッドに渡します。

@implementation MustHaveParent 
{ 
    id myParent; // reference to my parent 
} 

- (instancetype) initWithParent:(id)parent 
{ 
    self = [super init]; 
    if(self) 
     myParent = parent; 
    return self; 
} 

と、このクラスのインスタンスを使用して作成されることがあります。次のクラスMustHaveParentを与え例えば

は、定義されるかもしれません、あなたのモデルは、このような参照あなたを必要としない場合

// myChild is a *local* variable, see below 
MustHaveParent *myChild = [[MustHaveParent alloc] initWithParent:self]; 

親が子を参照し、子が親を参照する参照サイクルを作成しないように注意する必要があります。このため、上記の例ではローカル変数が使用されていますが、参照がクリエイターのインスタンス変数に格納されている場合は、サイクルがあります。必ずしも悪いサイクルではありませんが、しばしばメモリリークを引き起こします。あなたはについての詳細を知る必要がある場合、これは、「リファレンス・サイクル」、「強い参照」、「弱い参照」などを調べる

HTH

関連する問題