Ios 什么';[UIApplication sharedApplication]和didFinishLaunchingWithOptions的应用程序参数之间的区别是什么?

Ios 什么';[UIApplication sharedApplication]和didFinishLaunchingWithOptions的应用程序参数之间的区别是什么?,ios,objective-c,Ios,Objective C,我现在正在学习iOS 7和Xcode 5中的后台抓取功能,并阅读了一些教程,解释如何在应用程序中设置setMinimumBackgroundFetchInterval:didFinishLaunchingWithOptions:方法 我读过的一种示例代码如下: -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UI

我现在正在学习iOS 7和Xcode 5中的后台抓取功能,并阅读了一些教程,解释如何在
应用程序中设置
setMinimumBackgroundFetchInterval
:didFinishLaunchingWithOptions:
方法

我读过的一种示例代码如下:


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval: UIApplicationBackgroundFetchMinimum];
    return YES;
}
另一个是以下内容,它利用
应用程序
参数设置其后台初始化:


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setMinimumBackgroundFetchInterval: UIApplicationBackgroundFetchMinimum];
    return YES;
然而,在上面的两个代码中,我不知道是什么使一个不同于另一个。
shareApplication
类方法返回
UIApplication*
,它与
application
参数的类型完全相同


如果两者之间没有任何区别,那么使用前者有什么意义呢?据我所知,第一种方法有更多的示例,但我总是觉得越简单越好(同样,如果没有差异,我认为存在一些差异,如上所述)。

没有区别,当您不知道是哪个类发送了该消息时,使用method参数非常有用(例如,假设您有几个
UITableView
,它们都具有相同的委托,您想知道哪一个称为委托)

在这种情况下,每个应用程序只有一个
UIApplication
,即
[UIApplication sharedApplication]
中的应用程序和调用代理的应用程序

总而言之,是同一个对象,没有区别,只有风格

扩展示例,假设您有一个如下所示的变量:

@property (nonatomic, strong) UITableView *myTable;
你知道吗

self.myTable.delegate = self;
调用委托时,有以下等价项:

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

在这种情况下,没有区别

使用哪种选项可能是风格/偏好的问题


我使用[UIApplication sharedApplication]。

UIApplication是一个单例类,与[UIApplication sharedApplication]没有区别是一种访问singleton类共享变量的方法,如果您从UIApplication类本身调用该方法,那么使用application就足以访问该方法。

谢谢。这是否意味着前者需要多调用一个冗余的方法,对吗(尽管成本显然可以忽略不计)它确实需要再打一次电话,但我认为它甚至不值得注意。这只是风格的问题。它可能不值得注意,但没有必要浪费。