Frage

Ich frage mich, ob in obj-c möglich ist, die übergeordnete Instanz von einem Objekt zuzugreifen, wie:

@interface AObject : NSObject {
}

-(void) sample{
 NSLog("%@", [[self parentInstance] Id]);
}

@interface DbObject : NSObject {
    NSInteger Id;
    AObject* ob;
}
War es hilfreich?

Lösung

Sie müßten AObject bewusst DbObject machen, sondern auch sollten Sie die Eigenschaften von DbObject mit Selektoren zugreifen zu können.

@interface AObject : NSObject
{
    id father;
}
- (id) initWithFather:(id) theFather;
- (void) sample;
@end


@implementation AObject
- (id) initWithFather:(id) theFather
{
    father = theFather;
    return self;
}    

- (void) sample
{
    NSLog (@"%d", [father Id]);
}
@end


@interface DbObject : NSObject
{
    NSInteger Id;
}
- (id) initWithId:(NSInteger) anId;
- (NSInteger) Id;
@end


@implementation DbObject
- (id) initWithId:(NSInteger) anId;
{
    Id = anId;
    return self;
}

- (NSInteger) Id
{
    return Id;
}
@end


int main (int argc, char *argv[])
{
    DbObject *myDbObject = [[DbObject alloc] initWithId:5];
    AObject *myAObject = [[AObject alloc] initWithFather:myDbObject];

    [AObject sample];

    return 0;
}

Andere Tipps

Nicht, dass ich wüsste. Sie müssten machen AObject sich dessen bewusst zu Eltern. Möglicherweise gibt es andere Möglichkeiten, es zu tun, wenn Sie mit der Runtime-Geige, aber es ist nur einfacher zu AObject einen Elternteil machen muß.

Ich bin nicht ganz sicher, was Sie fragen. Sie suchen nach dem super Stichwort?

Nein, das ist super für die Klasse erhalten.

Ich frage in ist, wie das übergeordnete Objekt (wie in einem Baum).

Aber ich denke, das ist nicht möglich ... und ist necesary assoziiert das Kind mit den Eltern.

Wenn Sie das wirklich tun möchte, könnte man die „behalten“ -Methode in AObject außer Kraft setzen auf dem aktuellen Stapel zu suchen und suchen die ID der anrufenden Klasse. Sorry, Sie haben zu untersuchen, wie das zu tun, ich weiß nur, kann man aus anderen Forschungs.

Wenn das, was Sie wirklich versuchen, ist eine Art von Debug-Anweisung zu tun haben, die Ihnen sagt, die ein bestimmtes Objekt besitzt -. Sie behalten nur außer Kraft setzen können und Haltepunkte setzen oder hilfreiche Daten setzen Dumps dort

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top