我有一个显示地图的界面实例。 我从其他界面调用该地图并显示它,现在我想在地图界面中启动一个函数(func5)。
我正在创作:
myMap *map = (myMap*) [[UIApplication sharedApplication] delegate];
[map func5:2];
我在myMap界面声明了这个func5
。
-(void) func5:(int) num;
但是在尝试运行此行时出现错误:[map func5:2];
'NSInvalidArgumentException', reason: '-[AppDelegate func5:]: unrecognized selector sent to instance 0x952b140'
问题是什么?
答案 0 :(得分:1)
您可以发布函数 func5 的声明吗?
正确检查,并在必要时提供必要的参数
[map func5]; // is how you have called your method
[AppDelegate func5:] // is what your eror has showed with ":" after the function name
它们是两个不同的东西,取决于你如何定义你的方法
答案 1 :(得分:1)
首先,将这样的方法放在app委托上是一件可怕的事情,通常你想在自己的实例中使用这些方法。
其次,AppDelegate必须有
- (void)func5;
在标题中声明(即AppDelegate.h)
从这里的代码我假设“实例”你指的是你的AppDelegate,而不是像* MyMapClass myMap; 那样的东西。
如果它是第二个,那么你必须在app delegate的标题中使myMap成为一个声明的属性,然后以这种方式调用它:
AppDelegate *delegate = (AppDelegate*) [[UIApplication sharedApplication] delegate];
[deletage.myMap func5];
并在要调用函数的位置添加标题。
#include AppDelegate.h
这仍然是一种可怕的做法。