' sharedApplication'不可用:iOS上不可用(App Extension)

时间:2017-07-08 15:29:43

标签: ios objective-c xcode cocoapods

我正在建立一个应用程序,并在一两个月前为它开发了今天的扩展程序。随机地运行它可能是iOS 11 Beta中的第10次,我第一次收到错误,现在整个应用程序都无法构建。

  

/Users/Documents/AppName/Pods/CarbonKit/CarbonKit/CarbonTabSwipeNavigation.m:622:27:   ' sharedApplication'不可用:iOS上不可用(应用程序   扩展) - 适当时使用基于视图控制器的解决方案   代替。

错误出现在Pod中,但它出现在用Obj-C编写的文件中,而不是Swift中,因此很难理解。

这些是错误出现的行:

  // Some projects use GTM_BACKGROUND_TASK_FETCHING to avoid compile-time references
  // to UIApplication.
#if GTM_BACKGROUND_TASK_FETCHING
  return (id<GTMUIApplicationProtocol>) [UIApplication sharedApplication]; <- error
#else
  return nil;
#endif

有人可以提供有关如何解决此错误的建议吗?任何帮助都会非常感激。非常感谢![/ p>

干杯, 西奥

2 个答案:

答案 0 :(得分:1)

由于错误明确指出,以下API无法在Today Extensions中使用:

[UIApplication sharedApplication]

请阅读Apple提供的documentation on App Extensions

  

某些API不适用于App Extensions

     

由于其在系统中的重点作用,应用扩展程序没有资格参与某些活动。应用扩展程序不能:

     
      
  • 访问sharedApplication对象,因此无法使用该对象上的任何方法
  •   
     

- Apple,App Extension编程指南

确保 CarbonKit (或者,实际上,使用这些API的任何内容)在Today App Extension 目标不包含。一旦Xcode包含在您的扩展目标中,Xcode应该会自动向您发出警告(尽管可以暂时将这些警告静音)。

答案 1 :(得分:0)

这对我有用。 转到目标构建设置并找到Require Only AppExtension-Safe API并将其值设置为No。 这将使此错误消失。