另一个班级的跑步方法有效......半途而废?

时间:2011-06-10 16:27:11

标签: iphone

//AppDelegate (In applicationDidEnterForeground)
SomeClass* object = [[SomeClass alloc]init];
[object SomeMethod:nil];

//In SomeClass.h
-(void)SomeMethod:(id)sender;

//In SomeClass.m
-(void)SomeMethod:(id)sender {
    SomeUILabel.text = @"hehehe!!";
}

我在SomeUILabel.text线上种了一个断点,然后就完成了。但SomeUILabel.text没有改变。你能告诉我缺少什么吗?

2 个答案:

答案 0 :(得分:2)

我假设SomeClass是一个视图控制器?你不应该真的试图以这种方式控制视图控制器,它是视图控制器管理其视图的工作。

您必须记住的一件事是视图控制器的主视图是延迟加载的。如果你有一个设置SomeUILabel的nib文件,那么在加载该nib之前它将是nil。在UIKit认为需要视图之前,不会加载该笔尖。在发送NSLog(@"%@", object.view);消息之前,SomeMethod:是一种非常hacky的测试问题。这将触发视图的加载,因此只要SomeUILabel正确连接IBOutlet,这将有效。但是你真的需要重新组织你的代码,这是真正的问题。

答案 1 :(得分:1)

尝试NSLog(@“hehehe !!”) 我想它会起作用

我认为你在调用方法而“SomeUILabel”仍为零

可能是您没有创建标签,或者如果您正在加载xib文件,则在加载此xib之前调用该方法。