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)可能是公司的工程之前配置了什么导致无法使用,目前在网上没有找到解决方案。
PHP中文网2017-04-18 09:44:35
이전 프로젝트는 xcode7을 사용하여 생성되었으므로 기본적으로 UserNotifications.framework 프레임워크가 없으므로 수동으로 가져오면 됩니다.
ringa_lee2017-04-18 09:44:35
작성자님, 검색 헤드 경로를 추가한 후에도 옵션을 수동으로 변경했는데, 여전히 ld: Unexpected token: !tapi-tbd-v2 file '/Users/zhou/Desktop/Unnamed Folder 오류가 발생했습니다. /LankeProject/LankeProject/Lib /UserNotifications.framework/UserNotifications.tbd' 아키텍처 x86_64
clang: 오류: 종료 코드 1로 인해 링커 명령이 실패했습니다(호출을 보려면 -v를 사용하세요)
으아악