类之间的NSString [英] NSString between classes
问题描述
我需要在我的应用程序的两个类之间传递一个NSString(从ViewController Class_A到ViewController Class_B),我在StackOverflow上搜索,但这是我的情况的简化代码:
Class_A.h
#importClass_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! //这里我定义string INTO - (NSString *)方法
NSLog(@String to pass:%@,string);
return string;
}
Class_B.h
#importClass_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);
//从其nib加载视图后执行任何其他设置。
}
好吧,它的作用就像一个魅力!当Class_B加载时,我可以在日志输出中读取String to pass:A FANTASTIC STRING!和Received String:A FANTASTIC STRING!;但如果我只改变这部分代码(我需要它!):
Class_A.m
- (void)viewDidLoad
{
[super viewDidLoad];
stringToPass = @ANOTHER FANTASTIC STRING!;
//在加载视图之后执行任何其他设置,通常来自nib。
}
- (NSString *)stringPassage:(id)sender {
NSString * string = stringToPass; //这里我必须调用字符串FROM另一个Class_A方法(在这个例子中是从 - (void)viewDidLoad
NSLog(@String to pass:%@,string);
return string;
}
我可以在日志输出中读取String to pass: obvReceived String:(null);它令人难以置信,因为我可以将全局变量* stringToPass完全传递给Class_A的每个方法,除了这个 - (NSString *)方法。
让我们有两个viewControllers,即FirstVC和SecondVC。
在SecondVC中创建一个字符串,
@interface SecondVC:UIViewController {NSString * string2pass;}
@property(retain,nonatomic)NSString * string2pass;
在FirstVC中要显示SecondVC时,传递字符串为
- (void)presentSecondView
pre>
{
SecondVC * secondVC = [[SecondVC alloc] initWithNibName:@SecondVCbundle:nil];
secondVC.string2pass = @这是一个传递字符串;
[self presentModalViewController:resView animated:YES];
}
- (void)viewDidLoad
{
NSString * string4mFirstVC = string2Pass
}
I need to pass a NSString between two Classes (from ViewController Class_A to ViewController Class_B) of my app, I have searched on StackOverflow but this is the simplified code of my situation:
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. }
Well, it works like a charm! When Class_B is loaded I can read in the log output "String to pass: A FANTASTIC STRING!" and "Received String: A FANTASTIC STRING!"; but if I change only this parts of code (I need it!):
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; }
I can read in the log output "String to pass: (null)" and obv "Received String: (null)"; Its incredible because I can pass the global variable *stringToPass to every method of Class_A perfectly, except for this -(NSString *) method. So what is the problem? Thanks!
解决方案Let we have two viewControllers i.e FirstVC and the SecondVC. Make a string in SecondVC ,
@interface SecondVC : UIViewController { NSString *string2pass; } @property (retain, nonatomic) NSString *string2pass;
In FirstVC when you are going to present SecondVC, pass the string as,
- (void)presentSecondView { SecondVC *secondVC = [[SecondVC alloc]initWithNibName:@"SecondVC" bundle:nil]; secondVC.string2pass = @"this is a passing string"; [self presentModalViewController:resView animated:YES]; } - (void)viewDidLoad { NSString *string4mFirstVC = string2Pass }
这篇关于类之间的NSString的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!