CLANG dà errori lamentano file di intestazione difettoso UILocalizedIndexedCollation.h

StackOverflow https://stackoverflow.com/questions/1078001

  •  21-08-2019
  •  | 
  •  

Domanda

mi sono imbattuto in questo errore quando si costruisce il mio codice con CLANG:

In file included from /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:31,
                 from /Users/waspfish/Documents/NanaimoStudio/Projects/iPhoneMonk/Projects/IdeaOrganizer/IdeaOrganizer_Prefix.pch:13,
                 from :1:
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:13: error: syntax error before ‘AT_NAME’ token
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:21: error: syntax error before ‘}’ token
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:23: fatal error: method definition not in @implementation context
compilation terminated.
{standard input}:32:FATAL:.abort  detected.  Assembly stopping.

Ho finito per dover escludere l'UILocalizedIndexedCollation.h da UIKit.h e tutto costruito bene. Qualche idea di cosa potrebbe aver causato il problema? Non riesco a immaginare di Apple è la spedizione di un file di intestazione difettoso.

È stato utile?

Soluzione

Il problema deriva dal SDK 3.0, che ora usano gcc 4.2, ma la scansione-build ancora usare / usr / bin / gcc. Quindi è necessario dire scan-build da usare al posto /usr/bin/gcc-4.2.

scan-build --use-cc=/usr/bin/gcc-4.2 xcodebuild -configuration Debug

Et voilà!

Altri suggerimenti

ingegnere di Apple aveva confermato che avevano un bug nel quadro UIKit:

Abbiamo una soluzione semplice per questo UIKit bug. In UILocalizedIndexedCollation.h cambiare questo:

UIKIT_EXTERN @interface UILocalizedIndexedCollation : NSObject
to
UIKIT_EXTERN_CLASS @interface UILocalizedIndexedCollation : NSObject 

Denis2342

Di solito quando vedo qualcosa di simile pulisce la costruzione e riavviare Xcode, allora le cose andavano bene. Con GCC 4.2 volte un cattivo PCH potrebbe provochino singhiozzo come questo, ma clang utilizza un'implementazione pch totoally differente. Si consiglia t cancellare completamente il dir accumulo mentre Xcode non è in esecuzione.

Tecnicamente clang non è supportato per lo sviluppo iPhone, ma lo uso per simulatore compila, e non vedo gli errori di compilazione che state vedendo, quindi (almeno per me) funziona. Una cosa che sporge nella mia testa, si fa riferimento a modificare l'UIKit.h. Capisco quello che hai fatto, ma modificando le intestazioni di sistema è grande no-no. C'è una possibilità che avete fatto per altre ragioni, perché se non si esegue collettori di Esiste un certo numero di ragioni per cui questo potrebbe accadere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top