0

我有显示地图的界面实例。我从其他界面调用该地图并显示它,现在我想在地图界面中启动一个函数(func5)。

我正在创建:

myMap *map = (myMap*) [[UIApplication sharedApplication] delegate];
[map func5:2];

func5是我在 myMap 界面中声明的。

-(void) func5:(int) num;

但是在尝试运行此行时出现错误:[map func5:2];

'NSInvalidArgumentException', reason: '-[AppDelegate func5:]: unrecognized selector sent to instance 0x952b140'

问题是什么?

4

2 回答 2

1

您可以发布函数func5的声明吗?

正确检查此项,并在必要时提供必要的参数

[map func5];  // is how you have called your method
[AppDelegate func5:] // is what your eror has showed with ":" after the function name

它们是两个不同的东西,取决于你如何定义你的方法

于 2012-09-19T08:10:40.680 回答
1

首先,将这样的方法放在应用程序委托上是一件可怕的事情,通常您希望这些方法在它们自己的实例中。

二、AppDelegate 必须有

- (void)func5; 

在标头中声明(即 AppDelegate.h)

从这里的代码中,我假设“实例”是指您的 AppDelegate,而不是像 *MyMapClass myMap;这样的其他东西。事物。

如果是第二个,那么您必须在应用程序委托的标头中将 myMap 声明为属性,然后以这种方式调用它:

AppDelegate *delegate = (AppDelegate*) [[UIApplication sharedApplication] delegate];
[deletage.myMap func5];

并在要调用该函数的位置添加标题。

#include AppDelegate.h 

这仍然是一种可怕的做法。

于 2012-09-19T08:23:09.277 回答