2009-03-19 4 views
0

Ich versuche, ein NSArray zu übergeben, das Zeichenfolgen für die Verwendung in einer anderen Klasse als der Klasse enthält, in der es generiert wird. Deshalb habe ich es eine Eigenschaft wie folgt zusammen:Zugriff auf Eigenschaft von NSArray in Kakao nicht möglich

loginController.h

#import <Cocoa/Cocoa.h> 

@interface loginController : NSObject { 
NSArray *myArray; 
} 

@property (nonatomic, retain) NSArray * myArray; 

@end 

loginController.m

#import "loginController.h" 

@implementation loginController 

@synthesize myArray; 

@end 

Die Frage ist, wie die Schnittstelle und Implementierungsdateien der Klasse, in der ich will Der Zugriff auf myArray sollte wie folgt aussehen. In diesem Moment der Interface-Datei wie folgt aussieht:

#import <Cocoa/Cocoa.h> 
#import "loginController.h" 

@interface viewController : NSObject { 
NSArray* myArray; 
} 

@property (nonatomic,retain) NSArray* myArray; 

@end 

Ich bin mir nicht sicher, ob dies richtig ist und wie die Umsetzung aussehen soll, wenn ich in ihm benutzen myArray will. Kann jemand helfen?

+1

Off-Thema: Klassennamen sollten Titel-case in Ziel-c sein. –

Antwort

2

Ich denke, Sie haben vielleicht ein grundlegendes Missverständnis, wie Eigenschaften funktionieren oder wofür sie sind. Sie sind einfach generierte Getter und Setter. Sie machen Objekte von keiner Klasse im Programm automatisch sichtbar.

Weitere Informationen finden Sie unter Apple's docs.

1

Wenn Ihr LoginController einen Verweis auf Ihre ViewController Objekt hatte, man könnte etwas tun, die sich entlang dieser Linien in Ihrer LoginController Klasse:

#import "loginController.h" 

@implementation loginController 

@synthesize myArray; 
@synthesize myViewController; // this property needs to be 
           // declared in loginController.h 

// This method represents some hypothetical method that 
// would be invoked at some point after both 'myViewController' 
// and 'myArray' have been instantiated and initialized 
// (for example it could be 'awakeFromNib'). 
-(void)someMethod 
{ 
    myViewController.myArray = myArray; 
} 

@end 

Allerdings möchte ich Sie darauf hinweisen, dass es nicht gut sein könnte architektonische Entscheidung, Ihre LoginController und Ihre ViewController voneinander zu wissen. Ich poste nur diesen Code als ein Beispiel dafür, wie das Array zwischen zwei Objekten tatsächlich übergeben wird; In den meisten Entwürfen würde ich denken, dass sowohl LoginController als auch ViewController irgendeinem enthaltenen Objekt (wie zum Beispiel einem Controller auf Anwendungsebene) untergeordnet sind, was die Objekteinstellung myArray auf den beiden Controller-Instanzen wäre.