Uwagi do wydania macOS 27: wycofania, zmiany łamiące i poprawki
macOS 27 Golden Gate ukazał się w poniedziałek 14 września 2026 roku jako build 26A428, a jego SDK, build 26A425, trafił tego samego dnia do Xcode 27 (27A266a). Uwagi do wydania od Apple obejmują 86 obszarów z nagłówkami i 272 wpisy: 68 nowych funkcji, 173 rozwiązane problemy, 18 znanych problemów i 13 wycofań. Ten wpis czyta je z perspektywy dewelopera aplikacji na Maca: wpisy, które zmieniają działanie aplikacji w chwili zlinkowania jej z SDK 27, zmiany na poziomie systemu, które uderzają bez żadnej rekompilacji, 13 wycofań skonfrontowanych z nagłówkami i interfejsami Swift samego SDK oraz to, co mogłem, a czego nie mogłem sprawdzić na Macu, który wciąż działa na 26.6.2. Wpis o wydaniu GA Golden Gate omawia Rosettę i domyślną architekturę arm64 instalatora; ten omawia resztę.123
TL;DR
- Buildy. Urządzenie 26A428, SDK 26A425; numer SDK nie jest numerem urządzenia, co ma znaczenie, gdy zgłoszenie błędu prosi o jeden z nich. Indeks uwag do wydania Apple i kanał wydań nie wymieniają według stanu na 26 września żadnego macOS 27.0.1; najnowsze wpisy to 27 oraz beta 2 wersji 27.2 (26B5091g) z 21 września.137
- Zachowanie po zlinkowaniu z 27. Trzynaście zmian wpływa na działanie aplikacji w chwili zlinkowania jej z SDK 27: ukryte obrazy pozycji menu niebędące symbolami, przy czym pozycje złożone wyłącznie z obrazu tracą swój wyjątek;
NSOpenPanelwyprowadzającycanChooseFilesz typów zawartości; pozycja menu Layout Orientation przeniesiona pod Font; akcesoria paska tytułu rysowane poza swoimi granicami; promptyTextFieldprzyjmujące stylizację;TextRendererw zaznaczalnymText; modyfikatory kontrolek resetowane w widokach sheet i popover; obliczanie bezpiecznego obszaru wcontainerRelativeFrame;LabeledContentjako podtytuł pozycji menu;TabVieww inspektorach przechodzący na styl kart;Listprzyjmujący upuszczenia, które wcześniej odrzucał;newDocumentprzyjmujący dokument w pamięci; a w Mac Catalyst nakaz cyklu życia opartego na scenach i rozszerzone przywracanie stanu.2 - Bez rekompilacji. Obrazy symboli w pozycjach menu znikają w każdej aplikacji zlinkowanej z macOS 26.0 lub nowszym, a w menu SwiftUI i UIKit bez żadnego warunku dotyczącego SDK; rozpoznawacze gestów stają się wyłączną własnością pierwszej hierarchii widoków trafionej przez hit-test, zawieszone gesty same się anulują, bazowe
locationInView:zwracaNSZeroPoint,launchdwedług uwag nie wczytuje już list właściwości objętych kwarantanną, kończy się bezpośredni dostęp do bazy TCC, dostęp do kontenerów innych zespołów jest odmawiany bez pytania, XProtect może odgradzać dane aplikacji, ruch MDM i aktualizacji oprogramowania wymaga TLS 1.2 z szyframi na poziomie ATS, a aplikacje, które użytkownik ustawił na „Open using Rosetta”, uruchamiają się natywnie.2 - 13 wycofań, w tym cztery dotyczące API.
PHAssetResource.originalFilenameostrzega tylko przy deployment target 27.0 (macos(10.15, 27)w nagłówku);FileDocumentma miękką wersję100000.0i nigdy nie ostrzega;calendar.deleteEventszniknęło z interfejsu App Intents, więc stara nazwa się nie kompiluje;DVDPlaybackwbrew uwadze wciąż jest w SDK 27.0 jako stub, z nagłówkami i modułem, a przy minimum poniżej 27.0 ostrzega, przy 27.0 zaś zawodzi. Pozostałe dziewięć to zachowanie systemu, aplikacje, formaty lub pozostałości po betach, a nie API.23 - SDK potwierdza nowy AppKit.
NSRefreshController,NSTextSelectionManager, właściwościrolezNSToolbarItemGroup.RoleiNSSegmentedControlRole,preferredImageVisibility,cancellableByScrollGestureoraz opcjaNSApplicationPresentationDisableScreenCornerInteractionsmają adnotacjęmacos(27.0); frameworkiDiskImageKitiNowPlayingsą obecne;Systemma swój typStat; StoreKit maassignediBundledSubscription, a tam, gdzie uwagi pisząassignmentRevoked, interfejs mówiassignmentRevocation.3
Który build jest który?
| Gdzie | Build | Dowód |
|---|---|---|
| Urządzenie, macOS 27.0 | 26A428 | Kanał wydań, poniedziałek 14 września 20261 |
| SDK w Xcode 27 (27A266a) | 26A425 | MacOSX27.0.sdk/System/Library/CoreServices/SystemVersion.plist, ProductBuildVersion3 |
| macOS 27.2 beta 2 | 26B5091g | Kanał wydań, poniedziałek 21 września 20261 |
| macOS 27.0.1 | brak | Według stanu na 26 września nie ma go ani w kanale wydań, ani w indeksie uwag do wydania macOS17 |
| App Store Connect | przyjmuje SDK GA 27.0 | „You can now upload apps built with Xcode 27 using the SDK for iOS 27.0, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.” (można już przesyłać aplikacje zbudowane w Xcode 27 z SDK 27.0 do App Store oraz do testów wewnętrznych i zewnętrznych w TestFlight), 14 września6 |
Uwagi zaczynają się od dwóch zdań o zakresie, „The macOS 27 SDK provides support to develop apps for Mac computers running macOS 27 Golden Gate. The SDK comes bundled with Xcode 27, available from the Mac App Store,” (SDK macOS 27 pozwala tworzyć aplikacje na Maki z macOS 27 Golden Gate i jest dołączony do Xcode 27, dostępnego w Mac App Store) po czym przechodzą przez 86 obszarów z nagłówkami. Policzenie pozycji listy pod każdym nagłówkiem daje 68 nowych funkcji, 173 rozwiązane problemy, 18 znanych problemów i 13 wycofań. Na Siri przypada 26 rozwiązanych i sześć znanych, na SwiftUI 21 nowych i 19 rozwiązanych, na AppKit osiem nowych i 18 rozwiązanych, na Core AI 11 rozwiązanych, a na StoreKit Testing in Xcode 10 rozwiązanych i dwa znane.2 Wpis o uwagach do iOS 27 omawia stronę iPhone’a, gdzie te same wpisy SwiftUI występują w brzmieniu dla iOS; wpis o Xcode 27 omawia narzędzia.
Uwagi do bety 2 wersji 27.2, datowane na 21 września, są krótkie: awaria uzupełniania kodu w Xcode oznaczona jako naprawiona, jedno wycofanie w AppKit („The EnablePasteboardPrivacyDeveloperPreview user default has been removed.”, czyli usunięto to ustawienie domyślne), znany problem Notifications przy czystych instalacjach, znany problem Shortcuts, dwa znane problemy StoreKit Testing opisane niżej przeniesione do naprawionych oraz jedna nowa poprawka StoreKit Testing dotycząca uprawnienia do ofert wprowadzających po SKTestSession.clearTransactions(). Poza tymi wpisami StoreKit Testing nic w nich nie dotyka wpisów 27.0 z tego tekstu.4
Co zmienia się w chwili zlinkowania z SDK macOS 27?
Apple uzależnia zmiany zachowania od SDK, z którym aplikacja jest linkowana, więc te zmiany nie wpływają na już wydany build, a wszystkie uruchamiają się przy pierwszym archiwum z Xcode 27. Przytaczam uwagę do każdej z nich:2
- Obrazy menu niebędące symbolami i wyjątek pustego tytułu. Zmiana dotycząca obrazów symboli, opisana niżej, nie wymaga rekompilacji; resztę przynosi rekompilacja. „For applications linked on the macOS 27 SDK, both symbol and non-symbol menu item images are now automatically hidden. For applications linked on earlier SDKs, non-symbol images remain automatically visible, preserving compatibility with existing application behavior.” (przy SDK macOS 27 automatycznie ukrywane są obrazy zarówno symboliczne, jak i niesymboliczne; przy wcześniejszych SDK obrazy niesymboliczne pozostają widoczne). I w drugą stronę dla starych buildów: „For applications linked on SDKs prior to macOS 27, NSMenu now automatically shows menu item images if the menu item title and attributed title are both empty. This preserves existing application behavior when the image is the only representation of the menu item content. When linking against the macOS 27 SDK, these images will automatically be hidden.” (przy SDK sprzed macOS 27 NSMenu pokazuje obraz, gdy tytuł i tytuł z atrybutami są puste; po zlinkowaniu z SDK macOS 27 te obrazy zostaną ukryte). Pozycja złożona wyłącznie z obrazu wymaga po rekompilacji ustawienia
preferredImageVisibilityna.visible. Mój wpis o obrazach w menu przeprowadza przez audyt. - Panele otwierania same ustalają, co można wybrać. Oznaczone jako naprawione: „In apps built with the macOS 27.0 SDK, setting
allowedContentTypesandtreatsFilePackagesAsDirectoriesonNSOpenPaneupdatescanChooseFilesandcanChooseDirectoriesbased on whether the requested types are file or directory types.” (w aplikacjach zbudowanych z SDK 27.0 ustawienie tych dwóch właściwości aktualizujecanChooseFilesicanChooseDirectorieszależnie od tego, czy żądane typy są typami plików, czy katalogów). (Uwaga zawiera literówkę w nazwie klasy.) Panel otwierania, który ustawiał typy zawartości, a potem polegał na jawnymcanChooseDirectories = true, to przypadek do ponownego przetestowania. - Layout Orientation zmienia miejsce. „NSTextView’s
menuForEvent:now returns a context menu in which the Layout Orientation menu item, and its submenu, are located inside the Font submenu. Because this change can cause compatibility issues with some shipping applications, it applies only to applications linked on the macOS 27 SDK.” (pozycja Layout Orientation wraz z podmenu trafia do podmenu Font, i to tylko w aplikacjach zlinkowanych z SDK macOS 27). Kod, który odnajduje tę pozycję, przechodząc po menu, psuje się po rekompilacji. - Akcesoria paska tytułu wychodzą poza krawędzie. „When an app is linked on macOS 27.0 or later,
NSTitlebarAccessoryViewControlleris now allowed to draw outside its bounds by default, supporting effects such as shadows and interactive glass effects. During reveal animations, accessories might be clipped for the duration of the animation or when the accessory ishidden.” (domyślnie może rysować poza swoimi granicami, co umożliwia cienie i efekty szkła; podczas animacji odsłaniania akcesoria mogą być przycinane). - Prompty
TextFieldprzyjmują stylizację. „In apps built with the macOS 27.0 SDK,TextFieldrespects custom font and color styling applied to its prompt. Apply styling to theTextprovided toTextField’spromptparameter at initialization.” (TextFieldrespektuje niestandardową czcionkę i kolor promptu; styl należy nadać obiektowiTextprzekazanemu w parametrzeprompt). - Zaznaczalny
TextdostajeTextRenderer. „In apps built with the iOS 27.0 and macOS 27.0 SDKs, selectableTextviews now supportTextRenderer,” a sąsiedni wpis o poprawce mówi, że niestandardowy renderer „now takes effect on aTextview that also has.textSelection(.enabled)applied.” (działa teraz także wTextz włączonym zaznaczaniem). - Widoki sheet i popover. Oznaczone jako naprawione: „In apps built with the 27.0 SDKs, the
controlSize,buttonSizing,buttonRepeatBehavior,menuIndicatorVisibility, andButtonBorderShapeenvironment values are now reset to their default values in sheets and popovers.” (te wartości środowiska wracają do domyślnych wewnątrz widoków sheet i popover). Sheet, który dziedziczył.controlSize(.large)po widoku prezentującym, przestaje to robić. containerRelativeFrame. Oznaczone jako naprawione dla buildów 27.0: „incorrectly accounts for safe-area insets on aScrollView’s non-scrollable axis, causing the calculated scrollable content size to be too small.” (błędnie uwzględniało wcięcia bezpiecznego obszaru na nieprzewijanej osiScrollView, przez co obliczony rozmiar treści był za mały). Kierunek tego wpisu jest niejasny, bo jego przykład opisuje treść wchodzącą w bezpieczny obszar, a nie kurczącą się; każdecontainerRelativeFramewewnątrzScrollViewwarto przetestować ponownie po rekompilacji.- Menu dostają podtytuły. „In apps built with the 27.0 SDKs, a
LabeledContentview used inside aMenumaps its value to the platform menu item’s subtitle.” (wartośćLabeledContentwewnątrzMenustaje się podtytułem pozycji menu). TabVieww inspektorach. „In apps built with the latest SDKs, the appearance ofTabViewsin inspectors now matches their appearance in sidebars, and in both contexts automatically uses the new.tabspicker style.” (w inspektorach wyglądają tak jak na paskach bocznych i w obu miejscach automatycznie używają nowego stylu.tabs).Listprzyjmuje więcej upuszczeń. „In macOS apps built with the macOS 27 SDK,Listaccepts drops in two cases that previously didn’t work: drags with compatible transfer representations are accepted into reorderable content even when the.reorderableItemtransfer type isn’t present, and a.dropDestination(...)modifier declared on a list item now performs the drop.” (przyjmuje upuszczenia w dwóch przypadkach, które wcześniej nie działały: zgodne przeciągnięcia do treści z możliwością zmiany kolejności nawet bez.reorderableItemoraz.dropDestination(...)zadeklarowany na elemencie listy). Obsługa upuszczenia, która nigdy nie uruchamiała się na Macu, może zacząć się uruchamiać.newDocumentprzyjmuje instancję. „In macOS apps built with the macOS 27 SDK, the action retrieved from the\.newDocumentenvironment value accepts an in-memoryReadableDocumentproduced by an autoclosure. SwiftUI presents a new document window populated with the supplied instance, instead of invoking the document group’s default factory.” (akcja przyjmujeReadableDocumentz pamięci, a SwiftUI otwiera okno z tą instancją zamiast wywoływać domyślną fabrykę grupy dokumentów).- Mac Catalyst. Wśród wycofań UIKit: „Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch,” (aplikacje zbudowane z najnowszym SDK muszą przyjąć cykl życia oparty na scenach, inaczej się nie uruchomią) to ten sam nakaz, który wpis o scenach omawia dla iOS, oraz „When linked on iOS 27, tvOS 27, macCatalyst 27, or visionOS 27 SDKs, you can use
UIScene.extendStateRestorationandUIScene.completeStateRestorationto extend state restoration” na przejście z tła na pierwszy plan. Osobno, i bez warunku SDK, „Catalyst apps now behave like AppKit apps when you switch to them with no open windows” (aplikacje Catalyst zachowują się jak aplikacje AppKit po przełączeniu na nie bez otwartych okien); nie tworzą już okna, chyba że zostaną aktywowane z Docka lub Spotlight.
Dwa wpisy, jeden w sekcji SwiftUI i jeden w Swift Charts, należą do tej listy, choć zależą od kompilatora, a nie od linkowania. Przepisane makro @State „back-deploys to iOS 17 aligned OSes” (jest przenoszone wstecz do systemów zrównanych z iOS 17) i zmienia to, co kompiluje się w Xcode 27: niektóre deklaracje z wartością początkową, które dodatkowo przypisują wartość w init, przestają się kompilować, w słowach Apple „some such cases,” (niektóre takie przypadki) a syntetyzowany prywatny inicjalizator znika. Wpis o makrze @State zawiera audyt. Wpis Swift Charts, oznaczony jako naprawiony, opisuje ostrzeżenie i możliwą awarię w czasie działania: „When your project has a minimum deployment target lower than 27.0, using conditionals inside a Chart closure produces the warning” o zgodności z _ConditionalContent, „and the app might crash at runtime when that content is loaded.” (przy minimalnym deployment target poniżej 27.0 warunki w domknięciu Chart dają ostrzeżenie, a aplikacja może ulec awarii przy wczytaniu tej treści). Cytowane ostrzeżenie ma pustą nazwę platformy, co wygląda na diagnostykę z bet, i nie udało mi się go odtworzyć: Chart, którego domknięcie rozgałęzia się przez if między BarMark a LineMark, przeszedł type-check bez żadnej diagnostyki wobec SDK 27.0 zarówno przy deployment target 26.0, jak i 27.0, 26 września. Część wpisu o awarii w czasie działania to tekst Apple i pozostaje tu nieprzetestowana.23
Co zmienia się bez żadnej rekompilacji?
Druga połowa uwag opisuje system operacyjny, a te zmiany dotyczą pliku binarnego wydanego w zeszłym roku.2
- Obrazy symboli w menu znikają. AppKit: „By default,
NSMenuhides all menu item symbol images” (domyślnieNSMenuukrywa wszystkie obrazy symboli w pozycjach menu), a zmiana dotyczy aplikacji „to applications linked on macOS 26.0 and later”, więc build z Xcode 26 traci obrazy symboli na maszynie z 27 bez rekompilacji;preferredImageVisibilitywNSMenuItem,API_AVAILABLE(macos(27.0)), służy do nadpisania, a pole wyboru „macOS 26.0 only” w inspektorze xib jest drugim przełącznikiem. SwiftUI: „By default, SwiftUI now hides all menu item symbol images in most contexts, while non-symbol images remain visible,” (SwiftUI domyślnie ukrywa obrazy symboli w większości kontekstów, a pozostałe obrazy zostają widoczne) zlabelStyle(_:)i.titleAndIconjako przełącznikiem, który je zachowuje, i bez warunku SDK we wpisie. UIKit: „On iPadOS 27.0 and macOS 27.0, the menu bar and context menus present a reduced set of menu item images and do not display images set on menu elements by default,” (pasek menu i menu kontekstowe pokazują ograniczony zestaw obrazów i domyślnie nie wyświetlają obrazów ustawionych na elementach menu) zpreferredImageVisibilitywUIMenuElementi znowu bez warunku SDK. Nagłówek zgadza się z odczytaniem tego jako zmiany systemowej: komentarz przyNSMenuItem.imagemówi, że „in macOS 27 and later, AppKit determines the visibility of menu item images, and will typically hide images.” (od macOS 27 o widoczności tych obrazów decyduje AppKit i zwykle je ukrywa).3 - Gesty stają się wyłączne. „Only the initial hit-tested view hierarchy will activate gesture recognizers until all gestures terminate. A new
exclusiveGestureBehaviorproperty onNSViewallows you to opt-out of this exclusive behavior on a per-view-hierarchy basis. Further, theInfo.plistkeyNSViewGestureRecognizerIsExclusiveallows you to opt-out for the entire app.” (dopóki wszystkie gesty się nie zakończą, rozpoznawacze aktywuje tylko pierwsza hierarchia widoków trafiona przez hit-test;exclusiveGestureBehaviorpozwala zrezygnować z tego dla danej hierarchii, a kluczInfo.plistdla całej aplikacji). Towarzyszący klucz,NSGestureRecognizerSuppressesMainMenuActions, pozwala akcjom menu głównego działać w trakcie aktywnego gestu, a „stuck gestures are automatically cancelled after user input has ended for a few seconds,” (zawieszone gesty są automatycznie anulowane kilka sekund po zakończeniu interakcji użytkownika) przy czym ustawienie domyślneNSCrashOnStuckGestureTimeoutzamienia to w awarię podczas debugowania. Rozpoznawacz na widoku nadrzędnym, który dawniej uruchamiał się razem z rozpoznawaczem widoku podrzędnego, teraz czeka. - Własne rozpoznawacze muszą same określać położenie. Oznaczone jako naprawione: bazowe
locationInView:wNSGestureRecognizer„now returnsNSZeroPointand logs an error pointing the developer at the missing override. CustomNSGestureRecognizersubclasses must provide their ownlocationInView:implementation.” (zwraca terazNSZeroPointi zapisuje w logu błąd wskazujący brakujące nadpisanie; własne podklasy muszą implementowaćlocationInView:). Osobny wpis opisuje diagnostyczne ustawienie domyślneNSGestureRecognizerCrashOnMissingOverridesjako przeznaczone „to help developers findNSGestureRecognizersubclasses that are missing required overrides to ensure that they always reach a terminal state” (do wyszukiwania podklas, którym brakuje nadpisań potrzebnych, by zawsze dochodziły do stanu końcowego); czy wychwytuje ono także braklocationInView:, uwagi nie mówią. PonadtoNSClickGestureRecognizers„with a click count greater than 1 will send an action before their multi-click timeout has elapsed.” (z liczbą kliknięć większą niż 1 wyślą akcję przed upływem limitu czasu wielokrotnego kliknięcia). launchdi kwarantanna. Oznaczone jako naprawione: „launchdno longer supports loadinglaunchdproperty list files with the quarantine extended attribute.” (launchdnie wczytuje już list właściwości z rozszerzonym atrybutem kwarantanny). Wpisy Apple o poprawkach czasem opisują stary błąd, a czasem nową regułę; czytany jako reguła, pobrany plik plist agenta, zainstalowany z tym atrybutem, przestaje się wczytywać.- TCC. W sekcji Deprecations: „Apps can no longer access the local TCC database directly.” (aplikacje nie mogą już bezpośrednio sięgać do lokalnej bazy TCC).
- Kontenery i XProtect. W sekcji System Integrity Protection: „Accessing files in other developer teams’ app data containers and app group containers no longer prompts the user for authorization; such accesses are denied by default and can be managed by the user in Privacy & Security settings.” (dostęp do plików w kontenerach innych zespołów nie wywołuje już prośby o zgodę; jest domyślnie odmawiany, a użytkownik zarządza nim w Privacy & Security). Oraz: „XProtect may now restrict access to app data that is commonly targeted by malicious software.” (XProtect może ograniczać dostęp do danych aplikacji, na które często celuje złośliwe oprogramowanie). Znany problem w sekcji Privacy & Security dodaje, że „a process without a bundle ID cannot be granted access to specific app data containers or app group containers owned by other developer teams,” (procesowi bez bundle ID nie można przyznać dostępu do kontenerów innych zespołów) z Full Disk Access jako wyjściem awaryjnym.
- TLS dla ruchu zarządzanego. „Starting in 27.0 operating systems, select system processes now enforce stricter network security (TLS) requirements,” (od systemów 27.0 wybrane procesy systemowe egzekwują ostrzejsze wymagania TLS) z wymienieniem MDM, DDM, Automated Device Enrollment, instalacji profili, instalacji aplikacji i aktualizacji oprogramowania; „Servers must support TLS 1.2 at minimum, using cipher suites and certificates that meet App Transport Security (ATS) requirements.” (serwery muszą obsługiwać co najmniej TLS 1.2 z zestawami szyfrów i certyfikatami spełniającymi wymagania ATS). Audyt TLS zawiera listę kontrolną.
- Rosetta. „On launch, Applications previously set to “Open using Rosetta” by a user will have the application launch natively,” (aplikacje, które użytkownik ustawił na otwieranie przez Rosettę, uruchamiają się natywnie) „If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0,” (jeśli Rosetta była zainstalowana, po aktualizacji nie jest automatycznie przywracana) a pakiety instalacyjne bez
hostArchitecture„will now default to arm64.” Wpis o wydaniu GA odtwarza to domyślne zachowanie instalatora na 26.6.2. - Neural Engine w tle. Wpis znajduje się na stronie macOS i zaczyna się od „iOS 27 includes Neural Engine improvements for Apple Intelligence capable devices,” więc należy go czytać jako uwagę wspólną dla platform: „The system now restricts background access to the Neural Engine, similar to GPU usage restrictions,” (system ogranicza dostęp do Neural Engine w tle, podobnie jak w przypadku GPU) oraz „Neural Engine memory usage is now attributed to your app process instead of the system, and appears in the Allocations instrument.” (pamięć Neural Engine jest przypisywana procesowi aplikacji i widać ją w instrumencie Allocations). Drugi wpis Core AI mówi, że dostęp w tle „requires the new entitlement: “com.apple.developer.background-tasks.continued-processing.inference”.” (wymaga tego nowego uprawnienia).
- Archiwa logów. „Unified Logging System archives generated on 27.0 releases cannot be read on macOS 26.1 or earlier due to an updated archive format. macOS 26.2 or later is required to read these archives.” (archiwów wygenerowanych w 27.0 nie da się odczytać w macOS 26.1 ani starszym; potrzebny jest 26.2 lub nowszy). Proces wsparcia, który otwiera pakiety
.logarchiveod klientów na starszym Macu, potrzebuje co najmniej 26.2. - Obietnice plików sprawdzają asercję. Oznaczone jako naprawione:
receivePromisedFilesAtDestination:„asserts that it is called during-prepareForDragOperation:,-performDragOperation:, or-concludeDragOperation:. IfreceivePromisedFilesAtDestination:...is called at other times, your application will throw an exception and terminate.” (sprawdza, czy jest wywoływane w trakcie jednej z tych trzech metod; wywołane w innym momencie zgłasza wyjątek i kończy aplikację). Odbiorca, który odkładał to wywołanie na późniejszy obieg pętli zdarzeń, teraz kończy działanie.
Które API są wycofane w 27.0?
Uwagi zawierają 13 wpisów pod nagłówkami Deprecations w 11 obszarach. Wycofanie w uwagach do wydania to zdanie; wycofanie w SDK to adnotacja dostępności, którą czyta kompilator, i jedno nie zawsze mówi to samo co drugie. Każdy wpis sprawdziłem z nagłówkami i interfejsami Swift w SDK macOS 27.0 w Xcode 27:23
| Wpis w uwagach | Co mówi SDK |
|---|---|
„The originalFilename property on PHAssetResource is incorrectly marked as non-nullable, which misrepresents the property value; a new, nullable filename property is available as a replacement.” (jest błędnie oznaczona jako nie-nullable; zastępuje ją nowa, nullable właściwość filename) |
API_DEPRECATED("Use filename instead", ios(9, 27), macos(10.15, 27), tvos(10, 27), visionos(1, 27)) w PHAssetResource.h |
„The FileDocument protocol is deprecated. Use ReadableDocument for read-only documents or Document for documents that support reading and writing.” |
@available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Conform your type to Document instead.") na FileDocument: miękkie, dziś bez ostrzeżenia. ReadableDocument, WritableDocument i Document są wszystkie w interfejsie |
„The calendar.deleteEvents schema has been renamed to calendar.deleteEvent.” |
deleteEvents występuje zero razy w interfejsie AppIntents dla macOS; deleteEvent raz. Zmiana nazwy bez aliasu to błąd kompilacji dla każdego, kto używa starej nazwy |
„The DVDPlayback framework has been removed from the macOS 27 Golden Gate SDK and apps cannot build against it. The framework will be removed in a future macOS release.” (framework usunięto z SDK i nie da się z nim budować; zniknie w przyszłej wersji macOS) |
Nie usunięto go z SDK na dysku: MacOSX27.0.sdk/System/Library/Frameworks/DVDPlayback.framework zawiera .tbd eksportujący 223 różne symbole _DVD dla targetów x86_64-macos, arm64e-macos i arm64e.x1-macos, folder Headers i module map. import DVDPlayback przechodzi type-check przy deployment target 26.0 z ostrzeżeniem „deprecated in macOS 10.15” przy DVDInitialize(); przy targecie 27.0 to samo wywołanie jest błędem, „unavailable in macOS: No longer supported”. Zatem „cannot build against it” sprawdza się przy minimum 27.0 dzięki adnotacjom dostępności, a stub wciąż jest na miejscu |
| „Encrypted HFS+ (CoreStorage) is deprecated and will not be supported in a future version of macOS.” | Format systemu plików, nie API; kopię zapasową warto przenieść na szyfrowany APFS |
| „Apps can no longer access the local TCC database directly.” | Nie adnotacja, lecz zasada egzekwowana przez system |
| „Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch.” (UIKit, a więc Mac Catalyst) | Awaria przy uruchomieniu, nie ostrzeżenie |
| „If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0.” | Zachowanie systemu |
„Installer packages which specify no hostArchitecture will now default to arm64.” |
Zachowanie systemu; odtworzone na 26.6.2 we wpisie o wydaniu GA |
| „Intel-based plugins and loaders may not appear in Settings or trigger notifications of their incompatibility. All Intel-based software will no longer be compatible with macOS 28.0, excluding legacy games.” (wtyczki dla Intela mogą nie pojawiać się w ustawieniach ani zgłaszać niezgodności; całe oprogramowanie dla Intela przestanie być zgodne z macOS 28.0, z wyjątkiem starszych gier) | Zachowanie systemu; foldery wtyczek wymienione przez Apple to ~/Library/Audio/Plug-Ins/*, ~/Library/Printers/ i ~/Library/ColorPickers/ |
| „AirPort Utility is no longer included with new clean installations of macOS.” | Aplikacja, nie API |
„Meshes compressed using the USDKit export API or usdcrush tool in Beta 1 cannot be decoded by Beta 2, and meshes from Beta 2 cannot be decoded by Beta 1.” |
Uwaga między betami, która przetrwała do strony wydania GA |
| „Weather Highlights is currently only available in US English.” | Apple umieszcza ją w sekcji Deprecations; czyta się ją jak uwagę o dostępności |
Jedno miękkie wycofanie leży poza nagłówkami Deprecations, to samo, które mają uwagi do iOS: .roundedBorder ma w macOS deprecated: 100000.0 z komunikatem „Use textFieldStyle(.bordered) with textInputBorderShape(.roundedRectangle)”, co pasuje do wpisu w New Features wprowadzającego TextInputBorderShape.3
Twarde wycofania są cichsze, niż się wydaje. Kompilator porównuje wersję wycofania z deployment target, a nie z SDK, więc macos(10.15, 27) daje ostrzeżenie tylko w targecie, którego minimalny macOS to 27.0. Sprawdziłem type-checkiem jeden plik, który odczytuje originalFilename, dostosowuje typ do FileDocument i stosuje .roundedBorder, wobec SDK 27.0 przy dwóch targetach: przy arm64-apple-macos26.0 skompilował się bez żadnej diagnostyki, a przy arm64-apple-macos27.0 dał dokładnie jedną, 'originalFilename' was deprecated in macOS 27: Use filename instead. FileDocument i .roundedBorder milczały w obu przypadkach.3 Aplikacja na Maca z realistycznym minimum nie usłyszy o żadnym z nich od kompilatora; ostrzeżeniem jest grep z listy poniżej.
Co nowego zmienia kod, który już istnieje?
Pull to refresh na Macu. „In macOS 27.0, AppKit adds NSRefreshController, providing pull-to-refresh functionality for NSScrollView. You can set it with NSScrollView.refreshController, configure a target or action to handle user-initiated refreshes, and call endRefreshing when the refresh completes or beginRefreshing to start one programmatically.” (AppKit dodaje odświeżanie przez pociągnięcie w NSScrollView: ustawia się je przez refreshController, konfiguruje target lub akcję, a po zakończeniu wywołuje endRefreshing, zaś beginRefreshing uruchamia je programowo). Klasa i właściwość refreshController w NSScrollView mają w SDK API_AVAILABLE(macos(27.0)).23
Zaznaczanie tekstu gestami. „NSTextSelectionManager provides common text selection interactions (click, drag, shift-click, double/triple-click word/line/paragraph selection) to a NSView with a set of NSGestureRecognizers rather than overriding NSEvent mouse methods. NSTextView now uses NSTextSelectionManager” (zapewnia typowe interakcje zaznaczania tekstu za pomocą rozpoznawaczy gestów zamiast nadpisywania metod myszy, a NSTextView już z niego korzysta) oraz „Existing NSTextView subclasses that override mouseDown: continue to work through a binary-compatible fallback path.” (istniejące podklasy nadpisujące mouseDown: działają dalej dzięki zgodnej binarnie ścieżce zapasowej). Klasa ma macos(27.0).23 W połączeniu z opisaną wyżej regułą wyłączności własny widok tekstowy nadpisujący mouseDown: działa dalej, ale rozpoznawacz gestów dołączony obok niego może teraz ustępować rozpoznawaczom menedżera.
Role dla kart. NSToolbarItemGroup i NSSegmentedControl dostają właściwość role, w obu przypadkach API_AVAILABLE(macos(27.0)), z NSToolbarItemGroup.Role (automatic, tabs, valueSelection) i NSSegmentedControlRole; uwagi mówią, że rola tabs jest „read by VoiceOver as “tabs”” (odczytywana przez VoiceOver jako karty) i ma „a distinct visual appearance.” (odrębny wygląd). TabsPickerStyle w SwiftUI to ten sam pomysł, a inspektory przyjmują go automatycznie po rekompilacji.23
Hot Corners wyłączone. „NSApplication.presentationOptions now includes the .disableScreenCornerInteractions option, which you can use to disable Hot Corners.” (zawiera opcję wyłączającą Hot Corners). W nagłówku to NSApplicationPresentationDisableScreenCornerInteractions, API_AVAILABLE(macos(27.0)), bit 15 maski opcji, a komentarz nad nią mówi „.autoHideDock or .hideDock must also be set for this option to take effect.” (aby opcja zadziałała, trzeba też ustawić .autoHideDock lub .hideDock).23
Dokumenty, przepisane. „In apps built with the 27.0 SDKs, the new ReadableDocument and WritableDocument protocols support asynchronous reading and writing, progress reporting, and direct access to document URLs,” (nowe protokoły obsługują asynchroniczny odczyt i zapis, raportowanie postępu i bezpośredni dostęp do URL dokumentów) przy czym Document łączy oba, a FileDocument i ReferenceFileDocument są „now deprecated.” Trzy wpisy pochodne zmieniają istniejące zgodności: domknięcie makeFileWrapper w FileWrapperDocumentWriter „now receives a second argument, previous: FileWrapper?,” i „Existing call sites must update their closures to accept the new parameter” (istniejące miejsca wywołań muszą zaktualizować domknięcia, aby przyjmowały nowy parametr); wymagania read(from:progress:) i write(content:to:previous:progress:) są „declared with @concurrent instead of nonisolated,” więc „Conforming types that previously used nonisolated should switch to @concurrent to match” (typy, które używały nonisolated, powinny przejść na @concurrent); a URLDocumentConfiguration „no longer conforms to Sendable.” Przeciążenie fileExporter eksportuje kolekcję wartości WritableDocument w jednym oknie dialogowym. Znany problem w tym samym obszarze: postęp „might not be presented.” (może nie być wyświetlany).2
Obrazy, obramowania, suwaki, menu. „AsyncImage now automatically caches downloaded images using HTTP caching protocols,” (automatycznie buforuje pobrane obrazy zgodnie z protokołami buforowania HTTP) z inicjalizatorami URLRequest i View.asyncImageURLSession(_:) do sterowania tym. TextInputBorderShape i textInputBorderShape(_:) pojawiają się razem ze stylem .bordered. „On macOS, the Slider implementation no longer uses NSSlider,” a obramowane przyciski Menu i Picker „no longer use NSPopUpButton in their implementation,” więc własny kod rysujący lub kod dostępności, który zakładał kontrolkę AppKit pod spodem, nie ma już czego szukać. GeometryProxy dostaje concentricCornerRadii i concentricCornerRadii(in:). Modyfikatory alert i confirmationDialog z elementem danych sięgają teraz wstecz do macOS 12.0.2
StoreKit. „Offer code redemption APIs now return a VerificationResult when redemption completes,” (API realizacji kodów ofertowych zwracają po zakończeniu VerificationResult) Transaction.OwnershipType.assigned i Transaction.RevocationType.assignmentRevoked „support volume purchases,” (obsługują zakupy hurtowe) a „Transaction query methods now additionally return transactions assigned to the Managed Apple Account.” (metody zapytań Transaction zwracają też transakcje przypisane do Managed Apple Account). Product.ProductType zyskuje pakiety (Bundles) i zestawy (Suites) subskrypcji z Product.SubscriptionInfo.BundledSubscription, a partnerName i partnerId trafiają do informacji Advanced Commerce. Interfejs zawiera assigned i BundledSubscription; przypadek unieważnienia nie jest zapisany tak, jak zapisuje go uwaga. Żaden plik w SDK nie zawiera assignmentRevoked; interfejs StoreKit deklaruje public static var assignmentRevocation w Transaction.RevocationType z surową wartością ASSIGNMENT_REVOKE. Przypadek ma @available(macOS 26.4, *) z @backDeployed(before: macOS 27.0), więc .assignmentRevocation przechodzi type-check przy targecie 27.0, a poniżej tego minimum wymaga if #available(macOS 26.4, *); nazwa z uwagi nie ma członka, do którego mogłaby się rozwiązać, przy żadnym targecie. Aplikacja na Maca, która filtruje transakcje według typu własności, widzi teraz trzecią wartość.23
stat w Swift. „System now provides Swift APIs for the C stat, lstat, fstat, and fstatat system calls,” (System udostępnia API Swift dla tych wywołań systemowych C) z typem Stat i FilePath.stat(); uwagi wymieniają też jako naprawiony konflikt, w którym „Custom FilePath or FileDescriptor extensions that make unqualified calls to stat() or stat(_) (without the Darwin. qualification) might conflict with the new Swift stat() instance methods.” (własne rozszerzenia wywołujące stat() bez kwalifikatora Darwin. mogą kolidować z nowymi metodami instancji). public struct Stat jest w interfejsie System.23
Obrazy dysków, maszyny wirtualne, Gatekeeper. „The new DiskImageKit framework provides Swift APIs for creating and managing standalone and stacked disk images in the Apple Sparse Image Format (ASIF) and raw disk image formats, for use with the Virtualization framework via VZDiskImageStorageDeviceAttachment.” (nowy framework udostępnia API Swift do tworzenia samodzielnych i warstwowych obrazów dysków w formatach ASIF i raw oraz zarządzania nimi, do użycia z Virtualization). Framework jest w SDK. Przekierowanie portów vmnet w Virtualization „now support[s] port forwarding when communicating over loopback,” (obsługuje teraz przekierowanie portów przez loopback) a spctl dostaje polecenie purge, „which will clean up Gatekeeper database entries for apps and executables which are no longer mounted.” (które czyści wpisy bazy Gatekeeper dotyczące aplikacji i plików wykonywalnych, które nie są już zamontowane). Wpis o kontenerach to miejsce, gdzie API obrazów dysków przydadzą się każdemu, kto skryptuje maszyny wirtualne.23
Kontrolery do gier, wideo, Metal. „The PlayStation® Access™ controller is now supported on macOS, iPadOS, and iOS.” VTLowLatencySuperResolutionScalerConfiguration „now supports a 1.5x scale factor,” a interpolacja klatek „supports arbitrary source dimensions up to 1080p.” Dwie poprawki w Metal dotyczą samplerów clamp-to-edge zwracających zero, jedna z nich specyficzna dla „the Apple 10 GPU family.”2
Foundation. Poprawka NSURL pojawia się tu w tym samym brzmieniu co w uwagach do iOS: „+[NSURL URLWithString:] no longer double-encodes the % of valid percent-escape sequences when encoding other invalid characters.” (nie koduje już podwójnie znaku % w poprawnych sekwencjach procentowych, gdy koduje inne niedozwolone znaki). We wpisie o iOS pokazałem, że poprawka podąża za systemem, na którym działa kod, i że build tego samego kodu na Maca wciąż dawał stary wynik %2520 na macOS 26.6.2; na 27.0 należy spodziewać się nowego wyniku, a na każdym 26.x starego.2
Bezpieczeństwo sprzętowe. „arm64e.x1 introduces additional hardware security and performance instructions, including CPA2 for stronger MIE protection,” (wprowadza dodatkowe instrukcje bezpieczeństwa i wydajności, w tym CPA2 dla silniejszej ochrony MIE) na „Mac computers with M6 or later chips”; lista targetów stubu DVDPlayback opisana wyżej pokazuje nazwę tego wycinka w praktyce. Wpis o arm64e.x1 omawia ustawienie builda.23
Znane problemy, które warto uwzględnić w planach
- Encje
photos.assetprzestają się kompilować. „Existing entities that conformed to @AppEntity(schema: .photos.asset) in prior releases might no longer compile in the 27 SDKs because new properties were added to the schema in this release.” (encje zgodne z tym schematem mogą się nie kompilować z SDK 27, bo do schematu dodano nowe właściwości). Obejściem jest przyjęcie tych właściwości za sprawdzeniem dostępności; wpis o uwagach do iOS wymienia 12 właściwości, których wymaga procesor metadanych, a uwagi do macOS zawierają ten sam wpis.2 - Schemat audio i Siri. „If you adopt the Audio App Schema domain, you might have trouble playing your content using Siri.” (po przyjęciu tej domeny odtwarzanie treści przez Siri może sprawiać problemy). Obejście: „Adopt an IntentValueQuery that takes the AudioSearch input, or index your entities in Spotlight.” (użyć IntentValueQuery przyjmującego AudioSearch albo zaindeksować encje w Spotlight).2
SpotlightSearchToolprzepełnia model na urządzeniu. Bez konfiguracji „the tool’s description and parameter schema alone exceed the on-device model’s context window before any prompt is added” (sam opis narzędzia i schemat parametrów przekraczają okno kontekstu modelu lokalnego, zanim dojdzie jakikolwiek prompt); rozwiązaniem jest zawężony przewodnik, np..focused(.documents).2- Files & Folders dla procesów bez pakietu. Procesowi bez bundle ID „cannot be granted access to specific app data containers or app group containers owned by other developer teams,” a obejściem Apple jest Full Disk Access „for the duration of the requirement.” (na czas trwania potrzeby). Chodzi o narzędzia wiersza poleceń, które czytają kontener innej aplikacji.2
- Niepodpisane rozszerzenia Safari. Podczas ich tworzenia „unsigned extensions might not appear until rebuilt when using the “Allow Unsigned Extensions” checkbox.” (niepodpisane rozszerzenia mogą nie pojawić się do czasu przebudowania).2
- Testowanie StoreKit. „Changing the storefront or locale using
SKTestSessiondoesn’t propagate throughStorefront.updates,” (zmiana sklepu lub ustawień regionalnych przezSKTestSessionnie jest propagowana) a nieudane zakupy „might display error dialogs even whendialogsDisabledis set to true.” (mogą wyświetlać okna błędów mimo wyłączenia dialogów). Oba figurują jako naprawione w uwagach do bety 2 wersji 27.2, które dodają nowy: zakup subskrypcji wewnątrz pakietu „incorrectly allows the user to unbundle instead of throwing an error.” (błędnie pozwala wyodrębnić ją z pakietu zamiast zgłosić błąd).24 - Shortcuts. Intencja używająca
DurationlubLPLinkMetadata„might fail” (może zawieść) w „Describe a change”, a parametrUnionValuez dwoma typami liczbowymi pokazuje opcję dwukrotnie; należy zadeklarować jeden.2 - Dysk startowy z macOS 11. „When a Mac is running macOS 11.0, you might not be able to select the boot volume of macOS 27.0 or later as the startup disk in System Settings.” (na macOS 11.0 może nie dać się wybrać woluminu z macOS 27.0 jako dysku startowego w System Settings). Obejściem jest wybór dysku startowego przyciskiem zasilania.2
- Siri, sześć wpisów. Wybór zdjęć po wyszukiwaniu, „Ask Siri” pojawiające się tam, gdzie Siri jest wyłączona, brak poleceń głosowych dla konkretnych zdjęć, niepełne fragmenty Maps, liczniki przy dodawaniu do albumów oraz obrazy encji niebędące SF Symbols, które nie pojawiają się w wynikach Siri dla aplikacji innych firm. Ten ostatni warto sprawdzić, jeśli encje mają własne obrazy.2
Czego nie mogłem uruchomić
Ten Mac działa na macOS 26.6.2, a maszyny z 27 wciąż nie mam. Każde zachowanie systemu w tym wpisie to tekst Apple, zacytowany i oznaczony jako taki; nic powyżej nie twierdzi, że system macOS 27 coś zrobił, bo to widziałem. Uruchomić mogłem SDK: Xcode 27 (27A266a) zawiera SDK macOS 27.0 (26A425) na każdym Macu, na którym da się go zainstalować, więc adnotacje w nagłówkach, interfejsy Swift, foldery frameworków i trzy przebiegi type-checku są prawdziwe i datowane na 26 września. Dwa miejsca, w których SDK i uwagi się nie zgadzają, stub DVDPlayback i pisownia przypadku unieważnienia, podaję jako to, co pokazuje SDK, a nie jako twierdzenia o tym, co maszyna z 27 zrobi w czasie działania.3
Co zrobiłbym w tym tygodniu
- Raz zarchiwizować aplikację z Xcode 27 i przed notaryzacją przejść po niej z listą zmian po zlinkowaniu z 27: obrazy pozycji menu, każdy panel otwierania ustawiający typy zawartości, każdy kod przechodzący po menu kontekstowym
NSTextView, akcesoria paska tytułu oraz każdy sheet, który dziedziczył modyfikatory kontrolek.2 - Przetestować gesty na maszynie z 27, zanim zrobią to użytkownicy: rozpoznawacz na widoku nadrzędnym, który dawniej uruchamiał się razem z rozpoznawaczem widoku podrzędnego, jest teraz wyłączny, a własna podklasa
NSGestureRecognizerbezlocationInView:zwraca punkt początkowy i zapisuje błąd w logu. Warto obserwować konsolę pod kątem tego błędu, który według Apple generuje AppKit; ustawienie domyślneNSGestureRecognizerCrashOnMissingOverridesjest opisane dla podklas, które nie dochodzą do stanu końcowego, a uwagi nie mówią, że obejmujelocationInView:.2 - Przeszukać grepem kod pod kątem
originalFilename,FileDocument,ReferenceFileDocument,.roundedBorder,deleteEventsiimport DVDPlayback; pierwsze ostrzega tylko przy targecie 27.0, trzy kolejne są miękkie i ciche,deleteEventsjuż nie istnieje, aimport DVDPlaybackstaje się błędem w dniu podniesienia minimum do 27.0.3 - Jeśli agent lub demon jest dostarczany przez pobranie, usunąć atrybut kwarantanny z listy właściwości podczas instalacji albo instalować ją ścieżką, która nigdy go nie niesie; uwagi Apple wymieniają
launchdw 27 jako nie wczytujący już takich plików.2 - Jeśli aplikacja czyta kontener innego zespołu, usunąć ten kod albo poprowadzić go przez Full Disk Access; monitu już nie ma, a domyślną odpowiedzią jest odmowa.2
- Zapisywać numer builda w zgłoszeniach błędów z obu miejsc:
ProcessInfona maszynie iSystemVersion.plistz SDK na Macu budującym. Różnią się, 26A428 wobec 26A425, a poprawka obecna w jednym może nie być obecna w drugim.3
Często zadawane pytania
Kiedy ukazał się macOS 27 i jaki to build?
W poniedziałek 14 września 2026 roku, jako build 26A428, w kanale wydań Apple obok Xcode 27 i pozostałych systemów 27.0. SDK w Xcode 27 identyfikuje się jako 26A425.13
Czy macOS 27.0.1 już jest?
Nie według stanu na 26 września 2026 roku. Indeks uwag do wydania macOS od Apple wymienia „macOS 27 Golden Gate Release Notes” i „macOS 27.2 Golden Gate Beta 2 Release Notes” i nic pomiędzy nimi, a kanał wydań nie zawiera 27.0.1 dla żadnej platformy. Gdy się ukaże, ten wpis dostanie datowaną notkę.17
Gdzie są uwagi do wydania macOS 27?
Na stronie dokumentacji deweloperskiej Apple, w sekcji macOS Release Notes, na jednej stronie dla tego wydania, zatytułowanej „macOS 27 Golden Gate Release Notes”, z 86 obszarami, najpierw General, potem od Accessory Access do XQuartz. Uwagi do bety 27.2 to osobna, znacznie krótsza strona.24
Co jest wycofane w macOS 27?
Trzynaście wpisów pod nagłówkami Deprecations: PHAssetResource.originalFilename, FileDocument, zmiana nazwy calendar.deleteEvents, framework DVDPlayback, Encrypted HFS+, bezpośredni dostęp do bazy TCC, nakaz cyklu życia opartego na scenach w Catalyst, trzy wpisy o Rosetcie, AirPort Utility w czystych instalacjach, uwaga o becie USDKit i uwaga o języku Weather Highlights. Tylko pierwsze cztery dotyczą API. originalFilename dostaje ostrzeżenie tylko przy deployment target 27.0, FileDocument milczy, deleteEvents się nie kompiluje, a DVDPlayback ostrzega przy minimum poniżej 27.0 i zawodzi przy 27.0.23
Czy aplikację trzeba przebudować dla macOS 27?
Nie, a to właśnie przebudowanie zmienia część zachowania. Wpisy dotyczące zlinkowania z 27 uruchamiają się dopiero przy archiwizacji z SDK 27; zmiany w gestach, launchd, TCC, kontenerach, TLS i Rosetcie dotyczą każdego pliku binarnego na maszynie z 27, niezależnie od przebudowania, a aplikacja zlinkowana z macOS 26.0 lub nowszym już tam traci obrazy symboli w menu.2
Czy DVDPlayback zniknął z SDK?
Nie z SDK 27.0 na dysku: folder frameworka, jego .tbd, nagłówki i module map są obecne w MacOSX27.0.sdk z Xcode 27. Jego funkcje są oznaczone jako niedostępne przy deployment target 27.0 i wycofane od 10.15 poniżej tego progu, więc projekt z minimum 27.0 nie może się z nim zbudować, co zgadza się z uwagą; projekt z niższym minimum nadal może, z ostrzeżeniem.3
Co zmieniło się w Mac Catalyst na macOS 27?
Obowiązuje nakaz cyklu życia opartego na scenach, UIScene.extendStateRestoration i completeStateRestoration są dostępne po zlinkowaniu z SDK macCatalyst 27, aplikacje Catalyst nie tworzą już okna po przełączeniu na nie bez otwartego okna, chyba że zostaną aktywowane z Docka lub Spotlight, UIStepper działa w idiomie Maca, a brakujące przyciski paska narzędzi na pasku bocznym figurują jako naprawione. Uwagi do bety Xcode 27.2 dodają zastrzeżenie, że tamtejszy SDK macOS „incorrectly report[s] 27.1 as a valid deployment target,” (błędnie podaje 27.1 jako prawidłowy deployment target) i że buildy Catalyst z 27.1 lub 27.2 „may be unable to use newly introduced API.” (mogą nie móc korzystać z nowo wprowadzonych API).25
Źródła
-
Apple, Releases, kanał RSS pobrany 26 września 2026: „macOS 27.0 (26A428)” z datą poniedziałek 14 września 2026 wraz z „Xcode 27 (27A266a)”; „macOS 27.2 beta 2 (26B5091g)” z datą poniedziałek 21 września 2026; brak pozycji macOS 27.0.1 dla jakiejkolwiek platformy aż do najnowszej pozycji, „TestFlight 4.4.0” z 24 września. ↩↩↩↩↩↩↩
-
Apple, macOS 27 Golden Gate Release Notes, pobrane 26 września 2026. Cytowane wpisy według numerów radarów: AppKit 170477566, 177605020, 180962967, 6938919, 173975472, 176048351, 176395420, 179374305, 179936632, 160867808, 162577742, 163365571; App Intents 176751155, 181800016, 177198033; NSGestureRecognizer 173551081, 175705302, 176396492; NSApplication 168692527; SwiftUI 105893279, 158160386, 158441552, 158441261, 177458781, 167448274, 165913417, 175594929, 170678002, 174628712, 180300890, 180301399, 180302015, 180302075, 178776840, 86580365, 151015350, 173362083, 173990195, 68559433, 78212597, 177185166, 179388848, 170480710, 180301165; UIKit 141837548, 161843040, 170479084; Mac Catalyst 69906818, 57819435, 176879915; Launch Daemons and Agents 166415497; TCC 90775556; System Integrity Protection 161835690, 178668601; Privacy & Security Settings 184660124; Network Security 176055825; Rosetta 168097174, 163213094, 171187112, 176042635; Core AI 174796039, 179282606; Apple Unified Logging System 160567675; PhotoKit 175412725; CoreStorage 175892420; DVDPlayback 179136240; AirPort Utility 158248382; USDKit 177417812; Weather Highlights 164408676; StoreKit 141012819, 156749517, 160501742, 167808780; StoreKit Testing in Xcode 184155259, 184255116; System 160612181, 177911316; Disk Images 177868758; Virtualization 64203273; Gatekeeper 123097648; Game Controller 168071382; VideoToolbox 177635243, 179040806; Metal 172520325, 177318505; Foundation 161588649; Hardware Security 152103975; Swift Charts 174168981; Core Spotlight 183770678; Safari 183044008; Shortcuts 166068090, 168315587; Startup Disk 166640903; Siri 171728298, 176299524, 176812955, 177116121, 177376984, 177984074. Liczby (86 obszarów; 68 nowych funkcji, 173 rozwiązane problemy, 18 znanych problemów, 13 wycofań) to policzenie przez autora pozycji listy pod każdym nagłówkiem. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Inspekcja przeprowadzona przez autora na SDK macOS 27.0 w Xcode 27 (27A266a) na Macu z macOS 26.6.2, 26 września 2026:
MacOSX27.0.sdk/System/Library/CoreServices/SystemVersion.plistpodajeProductBuildVersion26A425 iProductVersion27.0;PHAssetResource.hzawieraAPI_DEPRECATED("Use filename instead", ios(9, 27), macos(10.15, 27), tvos(10, 27), visionos(1, 27))przyoriginalFilename; interfejs SwiftUIarm64e-apple-macoszawiera@available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Conform your type to Document instead.")przyFileDocumentorazdeprecated: 100000.0z komunikatem otextFieldStyle(.bordered)przyroundedBorder; interfejsAppIntentsdla macOS zawieradeleteEventraz ideleteEventszero razy;DVDPlayback.frameworkzawieraDVDPlayback.tbd(223 różne symbole_DVD; targetyx86_64-macos,arm64e-macos,arm64e.x1-macos),Headers/DVDPlayback.hiModules/module.modulemap;swiftc -typecheckpliku importującegoDVDPlaybacki wywołującegoDVDInitialize()dał „warning: ‘DVDInitialize()’ was deprecated in macOS 10.15: No longer supported” przy-target arm64-apple-macos26.0oraz „error: ‘DVDInitialize()’ is unavailable in macOS: No longer supported” przy-target arm64-apple-macos27.0;swiftc -typecheckpliku odczytującegooriginalFilename, zgodnego zFileDocumenti stosującego.roundedBordernie dał diagnostyki przy-target arm64-apple-macos26.0i dał jedno ostrzeżenie, „’originalFilename’ was deprecated in macOS 27: Use filename instead”, przy-target arm64-apple-macos27.0;NSRefreshController.hi interfejsNSTextSelectionManagermająAPI_AVAILABLE(macos(27.0));NSToolbarItemGroup.hdeklarujeNSToolbarItemGroupRolezNS_SWIFT_NAME(NSToolbarItemGroup.Role) API_AVAILABLE(macos(27.0), ios(27.0))oraz właściwośćrolezAPI_AVAILABLE(macos(27.0)), podobnie jakNSSegmentedControl.h;NSMenuItem.hdeklarujepreferredImageVisibilityzAPI_AVAILABLE(macos(27.0));NSGestureRecognizer.hdeklarujecancellableByScrollGesturezAPI_AVAILABLE(macos(27.0));NSApplication.hdeklarujeNSApplicationPresentationDisableScreenCornerInteractionsjakoAPI_AVAILABLE(macos(27.0))z wartością w bicie 15 maski; foldery frameworkówDiskImageKit,NowPlayingiAccessoryAccesssą obecne; interfejsSystemdeklarujepublic struct Stat;swiftc -typecheckpliku, w którym domknięcieChartrozgałęzia się przezifmiędzyBarMarkaLineMark, nie dał diagnostyki ani przy-target arm64-apple-macos26.0, ani przy-target arm64-apple-macos27.0; interfejs StoreKit zawieraassignediBundledSubscriptionoraz deklarujepublic static var assignmentRevocationwTransaction.RevocationTypez surową wartościąASSIGNMENT_REVOKE, podczas gdy żaden plik w SDK nie zawieraassignmentRevokedz uwagi; ten przypadek jest zadeklarowany jako@available(iOS 26.4, macOS 26.4, tvOS 26.4, watchOS 26.4, visionOS 26.4, *)z@backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0);ReferenceFileDocumentma@available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Use Document protocol instead.");NSScrollView.hdeklarujerefreshControllerzAPI_AVAILABLE(macos(27.0)); komentarz wNSMenuItem.hprzyimagebrzmi „in macOS 27 and later, AppKit determines the visibility of menu item images, and will typically hide images”. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, macOS 27.2 Golden Gate Beta 2 Release Notes, pobrane 26 września 2026: General 186939138, AppKit 186955507, Notifications 187312007, Shortcuts 187499433, StoreKit Testing in Xcode 183933307, 184155259, 184255116, 186018916, cytowane. ↩↩↩
-
Apple, Xcode 27.2 Beta Release Notes, pobrane 26 września 2026, SDK, Known Issues (187160501), cytowane. ↩
-
Apple, uwagi do wydania App Store Connect, pobrane 26 września 2026, wpis z 14 września 2026, zacytowany w całości w tabeli. ↩
-
Apple, macOS Release Notes, indeks pobrany 26 września 2026: wpisy dla 27 to „macOS 27 Golden Gate Release Notes” i „macOS 27.2 Golden Gate Beta 2 Release Notes”. ↩↩↩