//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没有改变。你能告诉我缺少什么吗?
答案 0 :(得分:2)
我假设SomeClass
是一个视图控制器?你不应该真的试图以这种方式控制视图控制器,它是视图控制器管理其视图的工作。
您必须记住的一件事是视图控制器的主视图是延迟加载的。如果你有一个设置SomeUILabel
的nib文件,那么在加载该nib之前它将是nil
。在UIKit认为需要视图之前,不会加载该笔尖。在发送NSLog(@"%@", object.view);
消息之前,SomeMethod:
是一种非常hacky的测试问题。这将触发视图的加载,因此只要SomeUILabel
正确连接IBOutlet
,这将有效。但是你真的需要重新组织你的代码,这是真正的问题。
答案 1 :(得分:1)
尝试NSLog(@“hehehe !!”) 我想它会起作用
我认为你在调用方法而“SomeUILabel”仍为零
可能是您没有创建标签,或者如果您正在加载xib文件,则在加载此xib之前调用该方法。