簡體   English   中英

[UIApplication sharedApplication]和didFinishLaunchingWithOptions的應用程序參數之間有什么區別?

[英]What's the difference between [UIApplication sharedApplication] and application argument of didFinishLaunchingWithOptions?

我現在正在學習有關iOS 7和Xcode 5中的后台獲取功能的信息,並且閱讀了一些教程,這些教程解釋了如何在application: didFinishLaunchingWithOptions:方法中設置setMinimumBackgroundFetchInterval

我讀過的一種示例代碼如下:


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval: UIApplicationBackgroundFetchMinimum];
    return YES;
}

另一個是以下內容,它利用application參數設置其后台初始化:


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setMinimumBackgroundFetchInterval: UIApplicationBackgroundFetchMinimum];
    return YES;

但是,在上述兩個代碼中,我沒有什么能使一個與另一個有所不同。 shareApplication類方法返回UIApplication * ,它與application參數的類型完全相同。

如果兩者之間沒有任何區別,那么使用前者的意義何在? 據我所知,采用第一種方法的樣本更多,但我總是覺得越簡單越好(同樣,如果沒有區別,如上所述,我認為存在一些區別)。

沒有區別,當您不知道哪個類發送該消息時,使用method參數非常有用(例如,假設您有多個UITableView ,它們都具有相同的委托,您想知道哪個叫委托)。

在這種情況下,每個應用程序只有一個UIAplication ,即您的[UIApplication sharedApplication]的一個[UIApplication sharedApplication]和一個調用委托的[UIApplication sharedApplication]

總結,就是同一對象,沒有區別,只有風格。

擴展示例,假設您有一個像這樣的變量:

@property (nonatomic, strong) UITableView *myTable;

do

self.myTable.delegate = self;

調用委托時,存在等效項:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//self.myTable = tableView;
}

在這種情況下,沒有區別。

關於使用哪個選項,可能與樣式/偏好有關。

我使用[UIApplication sharedApplication]。

沒有區別,UIApplication是單例類,[UIApplication sharedApplication]是訪問單例類的共享變量的一種方法。如果從UIApplication類本身調用方法,則使用應用程序即可訪問該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM