我的iOS应用程序中的变量?

时间:2012-04-11 14:20:25

标签: ios nsstring

我不能相信我会问这个问题,但我对这个可变的东西非常疯狂。

我想保存用户名信息。我在我的视图加载时加载它们。在此之后,当我点击按钮时,我将获得信息。

这是我的代码:

@interface SelfViewController : UIViewController
{
    NSString *usernameString;
}



- (void)viewDidLoad
{
     usernameString = @"test";
}



- (IBAction)goToProfileButtonPressed:(id)sender
{
    NSLog(@"%@", usernameString); //CRASH BAD EXEC

}

我错了什么????

2 个答案:

答案 0 :(得分:1)

将.h文件更改为:

@interface SelfViewController : UIViewController {
    NSString *usernameString;
}

@property (retain, nonatomic) NSString *usernameString;

然后在你的.m文件中:

@synthesize usernameString;

- (void)viewDidLoad {
     self.usernameString = @"test";
}

- (IBAction)goToProfileButtonPressed:(id)sender {
    NSLog(@"%@", self.usernameString); // "self." can be omitted, but it is best practice not to
}

- (void)dealloc {
    [usernameString release];

    [super dealloc];
}

问题是您将usernameString分配给自动释放的字符串对象。按下按钮时,usernameString已被释放并成为垃圾记忆。通过保留它(并随后在-dealloc中释放它以避免泄漏),您知道它不会过早释放。

答案 1 :(得分:0)

您需要合成ivar并将其添加为属性。 (对于非ARC编译):

中的.h:

@interface SelfViewController : UIViewController
{
    NSString *usernameString;
}    
@property (nonatomic, retain) NSString *usernameString;
<。>中的

@synthesize usernameString;