2012-04-04 3 views
0

私は2つのクラスを持ち、class2からclass1にNSStringを取得したいと考えています。他のクラスからNSStringを取得できますか?

どこが間違っていますか?

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

これらのオブジェクトを作成するために使用するコードと、実際に何が起こったかと同様に何が起こると思われるのかを示してください。 – lnafziger

答えて

2

あなたのいくつかの表現を確認してください。 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

あなたはNSStringへのポインタを返す必要があります。

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

そして:

-(NSString*)getstring; 
+0

まだastring = NULL; – user840250

+0

- (void)awakeFromNib { astring = [[NSString alloc] initWithFormat:@ "teststring"]; }まだNULLです – user840250

+0

awakeFromNibはプログラムで作成するため、クラス2では呼び出されません。 initメソッドで文字列を初期化します。そして単にself.astring = @ "....." – Mario

関連する問題