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

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

全部回覆 (2)
Ty80

已經解決問題,由於舊工程時使用xcode7創建的,所以預設是沒有UserNotifications.framework框架的,只要手動導入即可。

    左手右手慢动作

    樓主我手動導入之後也改了optional 新增了search head path之後還是報錯ld: unexpected token: !tapi-tbd-v2 file '/Users/zhou/Desktop/未命名資料夾/LankeProject/LankeProject/Lib/UserNotificect/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上运行的
      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!