[英]calling a method inside someClass from AppDelegate Objective-C IOS
我正在尝试从AppDelegate类调用someClass内部的方法。 我通常创建一个实例,然后使用该实例调用该方法。 像这样:
FFAppDelegate *delegate = (FFAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate someMethod];
我在代码中使用了很多^^,并且效果很好。 我要做的是将其切换。 我不想在AppDelegate内调用方法,而是要在AppDelegate的另一个类中调用方法。
SomeClass *test = (SomeClass *) [[UIApplication sharedApplication] delegate];
[test someMethod];
在这种情况下,由于“无法识别的选择器发送到实例”,我不断收到“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序”错误。
任何对此事的了解将不胜感激! :)
[[UIApplication sharedApplication] delegate];
返回您的AppDelegate
类,而不是SomeClass
您可以这样使用:
FFAppDelegate *delegate = (FFAppDelegate *) [[UIApplication sharedApplication] delegate];
[delegate someMethodForSomeClass];
然后在您的AppDelegate代码中,如下所示的someMethodForSomeClass
:
- (void)someMethodForSomeClass
{
SomeClass *someClass = _yourSomeClass;
[someClass someMethod];
}
实例化要从中发送请求的类的实例,并使该方法公开(在.h文件中)。 然后将该类导入应用程序委托并调用它。
像这样
YourClass * yourClassInstance = [[YourClass alloc] init];
[yourClassInstance someMethod];
在@interface下的YourClass.h中,您将像这样声明方法
-(void)someMethod;
这样任何人都可以访问它。
例如,如果您只想创建一次AlertView并在任何UiViewController中使用它
因此,您可以将方法设为UIAlertView并在需要时调用该方法
1)在您的appDelegate.h文件中
@property (nonatomic, strong) UIAlertView *activeAlertView;
2)在您的AppDelegate.m文件中
-(void)openAlert
{
NSString *strMsgPurchase = @"Write your message";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Buy" message:strMsgPurchase delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Buy",@"Restore", nil];
[alert setTag:100];
[alert show];
self.activeAlertView = alert;
}
3)调用所需的uiview方法
[((AppDelegate *)[[UIApplication sharedApplication] delegate])openAlert];
注意:在Appdelegate.h文件中定义-(void)openAlert方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.