Man*_*ani 4 oop objective-c ios objective-c-category
我正在尝试对UIViewController进行类别覆盖viewWillAppear:.但得到这个警告.
Category正在实现一种也可以在主类中实现的方法
@implementation UIViewController (ViewWillAppearCategory)
-(void)viewWillAppear:(BOOL)animated
{
//.........
}
@end
Run Code Online (Sandbox Code Playgroud)
我希望在视图中出现一些东西出现在所有屏幕上,所以我不想在所有屏幕上触摸.这就是为什么,选择类别.
我可以在子类中实现一些方法,我可以在所有VC(所有屏幕)中调用该方法.但我不想要这个.它会在视图中自动调用会出现调用.这是否有任何想法,或在上面做了任何错误?
注意:此代码仅出于某些测试目的而出现在开发阶段.所以我在使用app store时会删除此代码.因此,在移除过程中应该更容易完成任务,即我不会触摸所有屏幕.在提交到应用商店期间,我不会保留此代码.
小智 11
在这种情况下,您必须尝试Method Swizzling,这是一个非常好的形成概念,允许您更改现有选择器的实现.
有关更多详细信息和代码,请访问以下链接.
http://nshipster.com/method-swizzling/
类别用于添加新方法,而不是覆盖现有方法.也许使用以下代码创建UIViewController的子类,比如MyUIViewController:
-(void) viewWillAppear:(BOOL) animated {
// do your "category" stuff
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码创建MyUIViewController的所有其他UIViewControllers子类:
-(void) viewWillAppear:(BOOL) animated {
[super viewWillAppear:animated];
// rest of code for this class
}
Run Code Online (Sandbox Code Playgroud)