我现在正在学习iOS 7和Xcode 5中的后台提取功能,我已经阅读了一些教程,解释了如何在setMinimumBackgroundFetchInterval
方法中设置application: didFinishLaunchingWithOptions:
。
我读过的一种示例代码如下:
-(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
参数的类型完全相同。
如果两者之间没有任何差异,那么使用前者有什么意义呢?据我所知,有更多的样本采用第一种方法,但我总觉得更简单更好(再次,如果没有差异 - 我认为存在一些差异,如上所述)。
答案 0 :(得分:3)
没有区别,当您不知道哪个类发送了该消息时,使用method参数很有用(例如,假设您有多个UITableView
,所有这些都具有相同的委托,你想知道哪一个叫委托。)
在这种情况下,每个应用只有一个UIAplication
,而且是[UIApplication sharedApplication]
中的那个和调用该代表的那个。
总结,是同一个对象,没有区别,只有风格。
扩展示例,假设您有一个这样的变量:
@property (nonatomic, strong) UITableView *myTable;
哟哟:
self.myTable.delegate = self;
当调用委托时,theres是等价的:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//self.myTable = tableView;
}
答案 1 :(得分:0)
在这种情况下,没有区别。
关于你使用哪个选项,这可能是风格/偏好的问题。
我使用[UIApplication sharedApplication]。
答案 2 :(得分:0)
没有区别UIApplication是单例类,[UIApplication sharedApplication]是一种访问单例类共享变量的方法如果从UIApplication类本身调用该方法,则使用应用程序就足以访问该方法。