Как изменить iVar другого класса - PullRequest
0 голосов
/ 09 августа 2010

Это код. Это довольно просто. Я сделал два класса: один возвращает ошибку и выполняет гидратацию другого класса (TheView) и показывает его пользователю однако я не могу понять, почему View всегда возвращает Null. Спасибо, ребята заранее.

     @interface AccountControllerModel : NSObject {
            NSString *anError;
        }
        @property (nonatomic, retain) NSString *anError;

AccountControllerModel.m
    @synthesize anError;

    - (void)uploadFailed:(ASIHTTPRequest *)theRequest{

RegistrationViewController *regoVC = [[RegistrationViewController alloc] init];
[regoVC manageTheError:@"THIS IS AN ERROR"];
[regoVC release]; regoVC = nil;
    }

+++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++

    @interface RegistrationViewController : UIViewController {
        NSMutableString *test;
    }
    @property (nonatomic, assign) NSMutableString *test;

@synthesize test;

-(void)viewDidLoad {
  test = [[NSMutableString alloc] init];
}
-(void)manageTheError:(NSString *)theError{
self.test = [NSMutableString stringWithFormat:@"%@",theError];
resultOfRegistration.text = [NSString stringWithFormat:@"%@",self.test];
NSLog(@"test is %@",self.resultOfRegistration.text); //It comes back Null
 }

Ответы [ 2 ]

0 голосов
/ 09 августа 2010

Существует ряд проблем с вашим кодом.

@property (nonatomic, assign) NSMutableString *test;

Здесь две вещи, во-первых, экспонирование объекта NSMutable * в свойстве никогда не является хорошей идеей, две, вы должны «копировать» объекты-значения, особенно потому, что именно так вы рассматриваете это в своем коде. Сделай это @property (nonatomic, copy) NSString *test;

regoVC.test = [NSMutableString stringWithString:self.anError];

Вы присваиваете автоматически выпущенный объект назначаемому свойству, это утечка, изменение выше исправит это.

NSLog(@"test is %@",test); // It is perfect as you expect

test здесь не входит в сферу применения, но я бы предположил, что это должно быть regoVC.test, эти другие изменения должны исправить ситуацию.

0 голосов
/ 09 августа 2010

Алекс прав, некоторые разъяснения о том, что не работает, могут помочь, но, посмотрев, я мог бы найти вашу ошибку.[[NSNotificationCenter defaultCenter] postNotificationName: @ "Blah" object: self], у вас установлен объект nil, что может быть вашей проблемой с уведомлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...