2012-04-04 3 views
0

Nun, ich habe 2 Klassen und möchte NSString von class2 zu class1 bekommen.Kann ich NSString von einer anderen Klasse bekommen?

wo liege ich falsch?

class1.h

#import <Cocoa/Cocoa.h> 
#import "class2.h" 
@class class2; 
@interface class1 : NSObject 
-(IBAction)getstringfromclass2(id)sender; 
@end 

class1.m

#import "class1.h" 
@implementation class1 
-(IBAction)getstringfromclass2(id)sender { 
    class2 *controller = [[class2 alloc] init]; 
    NSLog(@"%@", [controller getstring]); 
} 
@end 

class2.h

#import <Cocoa/Cocoa.h> 
@interface class2 : NSObject { 
    NSString *astring; 
} 
-(NSString)getstring; 
@property (readwrite,retain) NSString *astring; 
@end 

class2.m

#import "class2.h" 
@synthesize astring; 
@implementation class2 
-(NSString)getstring { 
    return [self astring]; 
} 
@end 
+1

Bitte zeigen Sie den Code, den Sie verwenden, um diese Objekte zu erstellen und was Sie erwarten und was wirklich passiert ist. – lnafziger

Antwort

2

Ihre einige Ausdruck überprüfen. NSString -> NSString *

#import <Cocoa/Cocoa.h> 
@interface class2 : NSObject { 
    NSString *astring; 
} 
-(NSString *)getstring; 
@property (readwrite,retain) NSString *astring; 
@end 
class2.m 

#import "class2.h" 
@synthesize astring; 
@implementation class2 
-(NSString *)getstring { 
    return [self astring]; 
} 
@end 
0

Sie benötigen einen Zeiger auf NSString zurückzukehren:

-(NSString*)getstring { 
    return [self astring]; 
} 

Und:

-(NSString*)getstring; 
+0

noch astring = NULL; – user840250

+0

- (void) wakeFromNib { astring = [[NSString-Zuweisung] initWithFormat: @ "testring"]; } und immer noch NULL – user840250

+0

WakeFromNib wird nicht in Ihrer Klasse2 aufgerufen, da Sie es programmgesteuert erstellen. Initialisiere die Zeichenfolge in der init-Methode. Und benutze einfach self.astring = @ "....." – Mario