2011-11-12 96 views
1

我發現了幾個帖子在網上指出,我可以從任何視圖控制器通過下面的調用訪問我的應用程序委託對象:讀委託

[[UIApplication sharedApplicaton] delegate]; 

(例如:data between Views UIApplicationiOS - Calling App Delegate method from ViewController

但是,每當我將這一行包含在我的一個視圖控制器的某個函數中時,應用程序就會崩潰。

這是我正在編寫的第一個應用程序,我看不到我的代碼和其他帖子如何說我應該使用此sharedApplication調用之間的區別。爲了完整起見,下面是我的應用程序委託和視圖控制器的摘錄。

FirstViewController.h:

@class wStreamAppDelegate; 
#define URL_ADDRESS @"http://google.com" 

@interface FirstViewController : UIViewController <UIWebViewDelegate>{ 
    IBOutlet UIWebView * webView; 
wStreamAppDelegate* appDelegate; 
} 

@property(nonatomic,retain) wStreamAppDelegate* appDelegate; 
@property(nonatomic,retain) IBOutlet UIWebView* webView; 

FirstViewController.m:

#import "FirstViewController.h" 
#import "wStreamAppDelegate.h" 

@implementation FirstViewController 
@synthesize webView,appDelegate; 
@class wStreamAppDelegate; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
NSString* urlAddress = URL_ADDRESS; 
NSURL* url = [NSURL URLWithString:urlAddress]; 
NSURLRequest * requestObj = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestObj]; 

    self.appDelegate = (wStreamAppDelegate*)[[UIApplication sharedApplicaton] delegate]; 

    //This doesn't work either 
    // wStreamAppDelegate *appDelegate= (wStreamAppDelegate*)[[UIApplication sharedApplicaton] delegate]; 

wStreamAppDelegate.h:

@interface wStreamAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { 
    UIWindow *window; 
    UITabBarController *tabBarController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 

@end 

如果任何人有什麼可能會錯誤的任何想法,一般調試這些問題的建議或技巧,我真的很感激它。謝謝。

+0

要開始,請轉到運行>>控制檯打開控制檯,查看導致問題的具體錯誤。 –

+0

感謝回覆如此迅速: [會話開始於2011-11-11 22:38:37 -0800。] 2011-11-11 22:38:39.032 wStream [647:207] + [UIApplication sharedApplicaton]:無法識別的選擇器發送到類0x1ea2898 2011-11-11 22:38:39.036 wStream [647:207] ***由於未捕獲的異常'NSInvalidArgumentException',原因:'+ [UIApplication sharedApplicaton]:無法識別的選擇器發送到類0x1ea2898' ***一次調用堆棧: –

+0

試試這個... appDelegate = [[UIApplication sharedApplicaton] delegate]; – Sahil

回答

0

錯別字每個人遲早會得到......在這種情況下,您寫了「sharedApplicaton」而不是「sharedApplication」。

+0

就是這樣。感謝您的迴應。我現在接受你的回答。 –