理论上使用loadView这个方法,在view为nil的时候,被调用,各位看看我代码有啥问题没?创建一个不带xib的工程 在APPDelegate.m里
DemoViewController *dvc = [[DemoViewController alloc] initWithNibName:nil bundle:NULL];
[self.window addSubview:dvc.view];
然后
@implementation DemoViewController
(void)loadView
{
UIControl *control = [[UIControl alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
[self setView:control];
}
为什么之后用self.view仍然无法使用UIControl的方法呢?
整明白了,使用loadView改变self.view的类型为UIControl,编译器并不会知道,所以直接用UIControl的方法,编译器会报错。它只有在运行时才知道能实现UIControl的方法,刚用respondsToSelector验证了下果然如此。
看来以后想用还是performSelector 或用 (XXX)强制类型转换下吧。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。