2012-09-19 104 views
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' 

是什麼問題?

+0

您需要發佈更多的代碼來正確回答這個問題。顯示AppDelegate的聲明。 – trojanfoe

+0

AppDelegate它是我所有應用程序的一個大文件,在那裏可以共同確定哪些問題? – vadim

+0

了'func5的存在:'對於初學者方法......也是爲什麼錯誤信息是'func5:'可是你叫'func5'。事情是腥...... – trojanfoe

回答

1

首先,它是一個可怕的事情放方法,這樣在應用程序委託中,通常您需要這些方法在它們自己的實例中。

其次,AppDelegate中必須有

- (void)func5; 

在頭部聲明(即AppDelegate.h)

從這裏的代碼我假設的「實例」你的意思是你的AppDelegate,而不是其他類似* MyMapClass myMap;的事。

如果是第二個,那麼你必須做出MYMAP聲明的屬性在應用程序委託的頭,然後調用這樣說:

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

,並添加在你要撥打的頭功能。

#include AppDelegate.h 

STILL這是一個可怕的做法。

+0

通過「實例」我的意思是myMap類,不能明白爲什麼我在這裏得到AppDelegate錯誤,我從來沒有在這部分代碼中使用它。 – vadim

+0

嘗試我發佈的第二個解決方案。你得到的錯誤是因爲你試圖讓你的應用程序委託執行一個在myMap實例上聲明的方法,這個方法可能是在應用程序委託中聲明的。 – Pochi

1

你能後的功能func5的聲明?

檢查此正常,並提供必要時

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

它們是兩個不同的東西所需的參數,取決於你如何定義你的方法

+0

我不明白爲什麼我從AppDelage得到這個錯誤,我打電話給在myMap類中聲明的func5。不能明白爲什麼'appDelegate'在這裏涉及@Luis Oscar – vadim