簡體   English   中英

ios - NSObjCRuntime,NSZone和NSObject中的解析問題

[英]ios - Parse Issues in NSObjCRuntime, NSZone, and NSObject

我正在使用AddThis在我的iOS應用中添加共享選項。

我已導入類並將-fno-objc-arc標志添加到所有導入的類中,因為它們不使用ARC。

但是,當我嘗試運行應用程序時,我得到了大量的解析問題,例如:

Expected identifier or '('
Unknown type name 'NSString'
Unknown type name 'Protocol'
...

這些錯誤發生在NSObjCRuntime,NSZone和NSObject中。 我也包含必要的框架。 有任何想法嗎?

如果有幫助,請包括此圖片: 圖片

當我嘗試將C代碼(.h和.c)與Objective-C代碼混合時,我在項目中遇到了同樣的問題。 找到問題的原因:

檢查.pch文件以確保每個Objective-C框架#import(例如#import <UIKit/UIKit.h> )都包含在:

#ifdef __OBJC__

#endif

如果它們不在此條件范圍內,編譯器將嘗試將Objective-C框架導入C源代碼。

希望有所幫助。

我剛剛將Base64Transcoder.c的文件名更改為Base64Transcoder.m,現在項目編譯。 我不知道為什么這會解決問題,但它確實有效。

當我的項目包含.cpp文件時,我遇到了同樣的問題。

如果.cpp文件不包含ObjectiveC框架(例如),則必須使用“Default-C ++ Source”類型

在此輸入圖像描述

但如果.cpp文件有ObjectiveC框架 - 它必須是'Objective-C ++ Source'

在此輸入圖像描述

我有同樣的問題,使用C和C ++代碼與目標C,我沒有.pch最簡單的解決方案是進入您的構建設置 - >自定義編譯器標志並將“其他C標志”設置為“-x objective -c“並將”其他C ++標志“設置為”-x objective-c ++“

這將通過xCode 7.2完成

TLDR:如果你的PCH文件沒問題,請查看你的CPP文件標題,看看你是否意外地包含了Objective C對象的任何標題。

細節:我得到了這個,因為我不小心間接地在C ++類頭中包含了一個Objective-C類頭。 結構是這樣的:

Compass.h定義了一個純粹的Objective C類。

ActionTracker.h定義了一個理解Objective C結構的C ++類(通過ActionTracker.mm)。

HelloWorld.h定義了一個純C ++類。

在我的原始設置中,HelloWorld.h包含ActionTracker.h,但這沒關系,因為ActionTracker.h還沒有包含Compass.h。 后來,我更改了我的代碼並在ActionTracker.h中包含了Compass.h,然后將其拉入HelloWorld.h並得到了這些錯誤。

當我嘗試將info.plist文件從一個目錄移動到另一個目錄時,我遇到了同樣的問題。 這以某種方式觸發了XCode編輯該目標的構建階段,並顯着增加了“編譯源”和“復制捆綁資源”的數量。

幸運的是,我的項目有多個用於測試的目標,(即App Demo,App Dev,App Local,App 1.1,App 1.2等)

所以我只是復制了一個未受影響的目標並重命名它(也重命名了包標識符和構建方案),這顯然解決了我的問題,因為它不是整個項目受影響而只是那個特定的目標。

如果您想嘗試我的解決方案,請嘗試從頭開始創建新目標,或復制並重命名任何未受影響的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM