Iphone 全局变量调用仅在第一次工作
我定义了一个全局变量,它是从另一个视图调用的,它第一次工作,但没有后续的变量,它保留了第一次调用时的值!假设这是一个基本问题,变量没有根据需要正确定义。谢谢你提出解决这个问题的建议 声明:Iphone 全局变量调用仅在第一次工作,iphone,cocoa,nsstring,global-variables,Iphone,Cocoa,Nsstring,Global Variables,我定义了一个全局变量,它是从另一个视图调用的,它第一次工作,但没有后续的变量,它保留了第一次调用时的值!假设这是一个基本问题,变量没有根据需要正确定义。谢谢你提出解决这个问题的建议 声明: @interface TableArchiveAppDelegate : NSObject <UIAppDelegate> { NSString *varName; } @property (nonatomic, copy) NSString *varName; @sy
@interface TableArchiveAppDelegate : NSObject <UIAppDelegate> {
NSString *varName;
}
@property (nonatomic, copy) NSString *varName;
@synthesize varName;
-(void)test{
varName = textField.text;
}
- (void)viewDidLoad {
TableArchiveAppDelegate *mainDelegate = (TableArchiveAppDelegate *)[[UIApplication sharedApplication] delegate];
name.text = mainDelegate.varName;
[super viewDidLoad];
}
并从另一个视图请求:
@interface TableArchiveAppDelegate : NSObject <UIAppDelegate> {
NSString *varName;
}
@property (nonatomic, copy) NSString *varName;
@synthesize varName;
-(void)test{
varName = textField.text;
}
- (void)viewDidLoad {
TableArchiveAppDelegate *mainDelegate = (TableArchiveAppDelegate *)[[UIApplication sharedApplication] delegate];
name.text = mainDelegate.varName;
[super viewDidLoad];
}
我不确定我是否理解这个问题,但是当调用
-test
方法时,显示的代码将导致varName属性保存textField.text中设置的任何值。如果您从未为其指定不同的值,它将永远保留该初始值
您的问题可能是您没有使用合成的访问器
这:
…通过创建另一个NSString实例并使用pass NSString的值填充它,创建一个综合访问器,该访问器复制传递给它的NSString对象。然而,这:
varName = textField.text;
将varName分配给textField.Text中保存的字符串的地址。没有任何东西会被复制。如果textField.text更改,varName也会更改,因为两个ivar在同一地址共享相同的字符串值。此外,当textField.text释放字符串时,它也将从varName中消失
要复制textField.text的字符串,需要使用:
self.varName = textField.text;
。。。调用具有复制功能的综合访问方法
通常,在引用类自己的属性时,应该始终使用
self.
符号,以确保它们得到正确的保留/复制/发布等。当然,唯一的例外是,如果您编写自己的自定义访问器 我不确定我是否理解这个问题,但是当调用-test
方法时,显示的代码将导致varName属性保存textField.text中设置的任何值。如果您从未为其指定不同的值,它将永远保留该初始值
您的问题可能是您没有使用合成的访问器
这:
…通过创建另一个NSString实例并使用pass NSString的值填充它,创建一个综合访问器,该访问器复制传递给它的NSString对象。然而,这:
varName = textField.text;
将varName分配给textField.Text中保存的字符串的地址。没有任何东西会被复制。如果textField.text更改,varName也会更改,因为两个ivar在同一地址共享相同的字符串值。此外,当textField.text释放字符串时,它也将从varName中消失
要复制textField.text的字符串,需要使用:
self.varName = textField.text;
。。。调用具有复制功能的综合访问方法
通常,在引用类自己的属性时,应该始终使用
self.
符号,以确保它们得到正确的保留/复制/发布等。当然,唯一的例外是,如果您编写自己的自定义访问器 不清楚问题出在哪里。也许你可以提供你想看到的值以及你想看到它们的时间,以及你实际看到的值;你的应用程序委托中有两个名为varName
,一个是实例变量,另一个是属性。不清楚问题出在哪里。也许你可以提供你想看到的值以及你想看到它们的时间,以及你实际看到的值;您的应用程序委托中有两个名为varName
,一个是实例变量,另一个是属性。Hi-TechZen,self.varName是解决方案!我真的很感谢你们的支持和明确的步骤!!Hi-TechZen,self.varName是解决方案!我真的很感谢你们的支持和明确的步骤!!