NSString вне области проблемы? - PullRequest
2 голосов
/ 15 ноября 2010

Я действительно выдергиваю волосы, это должно быть простой проблемой, но я просто не вижу этого.

Я просто пытаюсь присвоить значение переменной из текстового поля.

В моем файле h у меня есть

NSString *currentPass; 
@property (nonatomic, retain) NSString *currentPass;

Мой файл m.

@synthesize currentPass;
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:    
    (NSInteger)buttonIndex{

if (alertView.tag == AlertPasswordAsk) {
    UITextField* theTextField = ((UITextField*)[alertView viewWithTag: 5]);
    currentPass = [NSString stringWithFormat:@"%@", theTextField.text];
    if ([theTextField isEditing]) {
        [theTextField resignFirstResponder];
    } 
}
}

- (void)alertView:(UIAlertView *)alertView 
    didDismissWithButtonIndex:(NSInteger)buttonIndex{

    NSLog(@"didDismissWithButtonIndex tag=%i", alertView.tag);
if (alertView.tag == AlertPasswordAsk) {
    if(buttonIndex == 1){
        NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
        NSString *strPassword = [NSString alloc];
        strPassword = [myDefaults stringForKey:@"pass"];

             // #########  ERROR OCCURS HERE #########
        NSLog(@"currentPass=%@ strPassword=%@", currentPass, strPassword);

        if (![currentPass isEqualToString:strPassword]) {

alt text

[6337:207] didDismissWithButtonIndex tag=10
Current language:  auto; currently objective-c
(gdb) continue
Program received signal:  “EXC_BAD_ACCESS”.
(gdb) bt
#0  0x02894903 in objc_msgSend ()
#1  0x00000000 in ?? ()

Ответы [ 2 ]

6 голосов
/ 15 ноября 2010

Вам необходимо сохранить объект, который вы назначаете currentPass:

self.currentPass = [NSString stringWithFormat:@"%@", theTextField.text];
1 голос
/ 15 ноября 2010
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:    
    (NSInteger)buttonIndex{

if (alertView.tag == AlertPasswordAsk) {
    UITextField* theTextField = ((UITextField*)[alertView viewWithTag: 5]);
//assigning to member variable will not retain your object.
// current address is just pointing to  auto released object not retaining it.
//    currentPass = [NSString stringWithFormat:@"%@", theTextField.text]; 

// use currentPass as with accessor:
self.currentPass = [NSString stringWithFormat:@"%@", theTextField.text];
    if ([theTextField isEditing]) {
        [theTextField resignFirstResponder];
    } 
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...