[英]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.