旧工程要适配iOS10,使用UserNotifications框架中的类时编译报错,但是新建工程时则没有任何问题。为什么?

发布于 2022-09-04 01:43:41 字数 1291 浏览 22 评论 0

1.问题描述:
iOS10的通知采用了新的API,包含在UserNotifications框架中。我尝试在公司的工程项目中使用该api,导入#import <UserNotifications/UserNotifications.h>时编译没有任何问题,但是一旦用到该框架中定义的类名时,编译就会立马报错,不管是模拟器还是真机均报错。但是奇怪的是,当我新建立一个工程,却没有任何问题。(两个项目的Development Target均设置为8.0)
使用的IDE为Xcode8.

2.相关代码:(只要用到了UserNotifications框架中定义的类,编译后就会报错)

UNUserNotificationCenter *notiCenter = [UNUserNotificationCenter currentNotificationCenter];  

3.报错信息:(架构问题)
// 模拟器时报错:

_OBJC_CLASS_$_UNTextInputNotificationAction", referenced from: 
objc-class-ref in AppDelegate.o

// 真机时报错:

_OBJC_CLASS_$_UNUserNotificationCenter", referenced from:
      objc-class-ref in AppDelegate.o
 

4.相关截图
// 报错关键代码
图片描述

// 真机编译报错截图
图片描述
// 模拟器编译报错截图
图片描述

5.尝试方案:
1)将工程的Development Target依次改成8.0、9.0、10.0,报错依旧。
2)新建一个工程,编译和运行均完全正常。
3)可能是公司的工程之前配置了什么导致无法使用,目前在网上没有找到解决方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若言繁花未落 2022-09-11 01:43:41

已经解决问题,由于旧工程时使用xcode7创建的,所以默认是没有UserNotifications.framework框架的,只要手动导入即可。

谁的新欢旧爱 2022-09-11 01:43:41

楼主 我手动导入之后 也改了optional 添加了 search head path之后 还是报错ld: unexpected token: !tapi-tbd-v2 file '/Users/zhou/Desktop/未命名文件夹/LankeProject/LankeProject/Lib/UserNotifications.framework/UserNotifications.tbd' for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的工程是在xcode7.3上运行的 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文