xcode8 - 旧工程要适配iOS10,使用UserNotifications框架中的类时编译报错,但是新建工程时则没有任何问题。为什么?
伊谢尔伦
伊谢尔伦 2017-04-18 09:42:35
0
2
483

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伐。

reply all(2)
Ty80

The problem has been solved. Since the old project was created using xcode7, there is no UserNotifications.framework framework by default. Just import it manually.

左手右手慢动作

The poster, I also changed the optional after manually importing it. After adding the search head path, I still got the error ld: unexpected token: !tapi-tbd-v2 file '/Users/zhou/Desktop/Unnamed Folder/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上运行的 
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template