2013-12-11 20 views
17

Natknąłem się na to dzisiaj. Otrzymuję ostrzeżenia w Xcode 4.6, jeśli próbuję uzyskać dostęp do CALayer bez importowania <QuartzCore/QuartzCore.h>. To samo jednak działa poprawnie w Xcode 5.Importowanie kwarcu nie jest wymagane w Xcode 5?

+7

Tak, to prawda. Podejrzewam, że SDK iOS7 teraz zawiera tę strukturę domyślnie tam, gdzie iOS6 nie. Byłby to problem tylko wtedy, gdy starasz się, aby Twój projekt działał zarówno na Xcode4, jak i na 5 –

+0

. Chciałbym poprosić SO o zaznaczenie tego pytania jako Community Wiki. –

+0

Nie jestem pewien, ale myślę, że jest on wbudowany w Xcode 5 –

Odpowiedz

23

Tak, <QuartzCore/QuartzCore.h> jest automatycznie włączone, ale to wydaje się być bardziej efektem ubocznym niż zamierzone, ponieważ jest włączone tylko pośrednio:

  • <UIKit/UIKit.h> obejmuje <UIKit/UISlider.h> ,
  • w iOS 7 SDK <UIKit/UISlider.h> zawiera <QuartzCore/QuartzCore.h>, powodu nowych zmiennych przykład w klasie UISlider (typ CAShapeLayer).

Ponadto Xcode 5 ma nowy build ustawienie „Ramy połączenie automatycznie”, który jest przez domyślnie włączony (i wymaga nowego „moduły” funkcję), tak, że ramy QuartzCore dodaje się również do biblioteki linków.

+1

+10 dla tak schludnego i zwięzłego wyjaśnienia. PS: Nadal jestem w stanie używać metod CALayer bez dodawania go do Linuksa z bibliotekami binarnymi – Anonymous

+0

Też to zauważyłem , a plik nagłówka 'UISlider' jest szczególnie obszerny, ponieważ ivars są deklarowane w interfejsie klasy (gdzie dowiadujemy się, że projekt iOS 7 nazywa się" look neue ") ... To prawdopodobnie nie było zamierzone! – Guillaume

+1

@ Anonim: Masz rację. Przetestowałem go za pomocą projektu, który został początkowo utworzony za pomocą Xcode 4. Dzięki nowemu projektowi Xcode 5 biblioteki z odniesieniami są domyślnie automatycznie połączone. Odpowiednio zaktualizowałem odpowiedź. –