アプリの2つのクラス(ViewControllerClass_AからViewControllerClass_Bまで)間でNSStringを渡す必要があります。StackOverflowで検索しましたが、これは私の状況の簡略化されたコードです。
Class_A.h
#import "Class_B.h"
@interface ViewController : UIViewController {
NSString *stringToPass;
}
@property (retain, nonatomic) NSString *stringToPass;
-(NSString *)stringPassage:(id)sender;
@end
Class_A.m
- (NSString *)stringPassage:(id)sender{
NSString *string = @"A FANTASTIC STRING!"; //here I define string INTO the - (NSString *) method
NSLog(@"String to pass: %@",string);
return string;
}
Class_B.h
#import "Class_A.h"
Class_B.m
- (void)viewDidLoad
{
[super viewDidLoad];
Class_A *Class_A_Instance = [[Class_A alloc] init];
NSString *importedString = [Class_A_Instance stringPassage:self];
[Class_A_Instance release];
NSLog(@"Received String: %@",importedString);
// Do any additional setup after loading the view from its nib.
}
まあ、それは魅力のように機能します!Class_Bがロードされると、ログ出力で「渡す文字列:素晴らしい文字列!」を読み取ることができます。および"受信した文字列:素晴らしい文字列!"; しかし、コードのこの部分だけを変更した場合(必要です!):
Class_A.m
- (void)viewDidLoad
{
[super viewDidLoad];
stringToPass = @"ANOTHER FANTASTIC STRING!";
// Do any additional setup after loading the view, typically from a nib.
}
- (NSString *)stringPassage:(id)sender{
NSString *string = stringToPass; // here I must call the string FROM another method of Class_A (in this example from - (void)viewDidLoad
NSLog(@"String to pass: %@",string);
return string;
}
ログ出力「渡す文字列:(null)」とobv「受信した文字列:(null)」を読み取ることができます。この-(NSString *)メソッドを除いて、グローバル変数*stringToPassをClass_Aのすべてのメソッドに完全に渡すことができるので信じられないほどです。では、何が問題なのでしょうか。ありがとう!