如何更改另一个类的iVar

时间:2010-08-09 12:12:22

标签: iphone objective-c ipad sdk

这是代码。这很直截了当。我创建了两个类,一个是返回错误并为另一个类(TheView)的iVar加水并将其显示给用户。但是我无法弄清楚为什么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 :(得分:0)

亚历克斯是对的,一些关于什么不起作用的澄清会有所帮助,但通过浏览我可能发现了你的错误。 [[NSNotificationCenter defaultCenter] postNotificationName:@“Blah”对象:self],您将对象设置为nil,这可能是您的通知问题。

答案 1 :(得分:0)

您的代码存在许多问题。

@property (nonatomic, assign) NSMutableString *test;

这里有两件事,一件是在一个属性中暴露一个NSMutable *对象永远不是一个好主意,两个你应该“复制”值对象,特别是因为这是你在代码中处理它的方式。制作此@property (nonatomic, copy) NSString *test;

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

您正在将自动释放的对象分配给assign属性,这是一个泄漏,上面的更改将解决这个问题。

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

test不在此范围内,但我认为应该是regoVC.test,这些其他更改应该可以解决问题。