추가 macOS Sierra 프레임워크 변경 내용Additional macOS Sierra Framework Changes

향상 된 프레임 워크 향상Accelerate Framework Enhancements

MacOS Sierra의 가속화 된 프레임 워크에는 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the Accelerate Framework for macOS Sierra:

  • Quadrature (정수 미적분학)가 추가 되었습니다.Added Quadrature (integral calculus).
  • 신경망을 구성 하기 위한 기본 기능이 추가 되었습니다.Added Basic functions for constructing neural networks.
  • 두 기하학적 개체가 교차 하는 것과 같은 항목을 테스트 하는 기 하 도형 조건자 함수를 추가 했습니다.Added Geometric predicate functions to test for things like the intersection of two geometric objects.

AppKit 프레임 워크의 향상 된 기능AppKit Framework Enhancements

MacOS Sierra AppKit 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the AppKit Framework for macOS Sierra:

  • 다음과 같이 NSCollectionView에 대 한 몇 가지 향상 된 기능이 있습니다.Several enhancements to NSCollectionView such as:
    • 축소 가능한 섹션 -사용자가 컬렉션 뷰 섹션을 단일 가로 행으로 축소할 수 있습니다.Collapsible Sections - Allows the user to collapse a Collection View section into a single horizontal row.
    • 부동 헤더 -이제 IOS에서 UICOLLECTIONVIEW 와 동일한 API를 사용 하 여 헤더 및 바닥글을 선형 레이아웃으로 이동할 수 있습니다.Floating Headers - Headers and Footers can now be floated (in a flow layout) using the same API as UICollectionView in iOS.
    • 스크롤 가능한 배경 보기 -이제 콘텐츠와 함께 스크롤하도록 컬렉션 뷰 배경을 설정할 수 있습니다.Scrollable Background Views - A collection Views background can now be set to scroll along with the content.
  • 지연 된 뷰 레이아웃 패스가 최적화 되 고 확장 되었습니다.The deferred view layout pass has been optimized and extended.
  • 끌어서 놓기 API는 이제 끌기 flocking 지원 하기 위한 새로운 NSFilePromiseProviderNSFilePromiseReceiver 클래스를 포함 합니다.The drag-and-drop API now includes the new NSFilePromiseProvider and NSFilePromiseReceiver classes to support drag flocking.
  • 기존 컨트롤에 몇 가지 편리한 생성자를 추가 했습니다.Several convenience constructors have been added to existing controls:
    • NSButton에는 누름 단추, 확인란 및 라디오 단추를 만들기 위한 새로운 생성자가 포함 되어 있습니다.NSButton includes new constructors for creating push buttons, checkboxes and radio buttons.
    • NSTextField에는 래핑 및 줄 바꿈하지 않는 레이블, 특성 사용 레이블 및 편집 가능한 텍스트 필드를 만들기 위한 새로운 생성자가 포함 됩니다.NSTextField includes new constructors for creating wrapping and non-wrapping labels, attributed labels and editable text fields.
    • NSSegmentedControl에는 레이블이나 이미지 그룹에서 분할 된 컨트롤을 만들기 위한 새로운 생성자가 포함 되어 있습니다.NSSegmentedControl includes new constructors for creating segmented controls from a group of labels or images.
    • NSSlider에는 가로 선형 슬라이더를 만들기 위한 새로운 생성자가 포함 되어 있습니다.NSSlider includes new constructors for creating horizontal linear sliders.
    • NSImageView에는 지정 된 NSImage에서 편집할 수 없는 이미지 뷰를 만들기 위한 새로운 생성자가 포함 되어 있습니다.NSImageView includes new constructors for creating non-editable image views from a given NSImage.
  • 동적으로 숨기 거 나 표시할 수 있는 가변 크기의 행과 열이 있는 표로 하위 뷰의 컬렉션을 자동 레이아웃 하도록 새 NSGridView 추가 되었습니다.The new NSGridView has been added to auto layout a collection of sub views into a grid with variable sized rows and columns that can be dynamically hidden or shown.

AVFoundation 프레임 워크의 향상 된 기능AVFoundation Framework Enhancements

MacOS Sierra에 대 한 AVFoundation 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the AVFoundation Framework for macOS Sierra:

  • MacOS에서 앱은 더 이상 콘텐츠 형식에 따라 서로 다른 AVPlayerItem 동작을 구현할 필요가 없습니다.In macOS, the app no longer has to implement different AVPlayerItem behaviors based on content type. Rate 속성을 설정 하기만 하면 AVFoundation에서 상태일 없이 재생할 수 있는 콘텐츠가 충분 한 경우를 결정 합니다.Simply set the Rate property and AVFoundation will determine when enough content is available for playback without stalling.
  • AVPlayerLooper 클래스를 사용 하면 재생 하는 동안 미디어의 지정 된 부분을 보다 쉽게 반복할 수 있습니다.The new AVPlayerLooper class makes it easier to loop a given piece of media during playback.
  • AVAssetDownloadURLSession 클래스를 사용 하면 FairPlay 암호화 된 HLS 스트림을 다운로드 하 고 나중에 재생할 수 있습니다.The AVAssetDownloadURLSession class allows for the downloading and later playback of FairPlay encrypted HLS streams.

핵심 데이터 프레임 워크 향상Core Data Framework Enhancements

MacOS Sierra에 대 한 핵심 데이터 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the Core Data Framework for macOS Sierra:

  • Root NSManagedObjectContext 개체는 serialization 없이 동시에 오류 및 가져오기를 지원 합니다.Root NSManagedObjectContext objects supports concurrent faulting and fetching without serialization.
  • NSPersistentStoreCoordinator 클래스는 SQLite 데이터 저장소의 풀을 유지 관리 합니다.The NSPersistentStoreCoordinator class maintains a pool of SQLite data stores.
  • 모드 (관리 개체 컨텍스트)를 사용 하는 새 쿼리 생성 기능을 사용 하 여 NSManagedObjectContext 개체를 WAL 저널 모드에 저장 하면 나중에 인출 하 고 오류를 발생 시킬 수 있습니다.The NSManagedObjectContext objects with SQLite data stores in the WAL Journal Mode support the new query generation feature where Managed Object Contexts (MOC) can be pinned to specific database versions for future fetching and faulting transactions.
  • 상위 수준 NSPersistenceContainer를 사용 하 여 NSPersistentStoreCoordinator, NSManagedObjectModel 및 기타 핵심 데이터 구성 리소스를 참조 합니다.Using the high-level NSPersistenceContainer to reference the NSPersistentStoreCoordinator, NSManagedObjectModel and other Core Data configuration resources.
  • Fetch를 더 쉽게 수행 하 고 하위 클래스를 만들 수 있도록 NSManagedObject에 몇 가지 새로운 편의 방법이 추가 되었습니다.Several new convenience methods have been added to NSManagedObject making it easier to perform fetches and create subclasses.

자세한 내용은 Apple의 핵심 데이터 프레임 워크 참조를 참조 하세요.For more information, please see Apple's Core Data Framework Reference.

핵심 이미지 프레임 워크 향상Core Image Framework Enhancements

MacOS Sierra에 대 한 핵심 이미지 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the Core Image Framework for macOS Sierra:

  • Cifilter 클래스의 ImageWithExtent 메서드를 사용 하 여 사용자 지정 처리를 필터 작업에 삽입할 수 있습니다.The ImageWithExtent method of the CIFilter class can be used to insert custom processing into the filter operation. 핵심 이미지는 출력 또는 표시를 위해 이미지를 처리할 때 필터 사이에 지정 된 콜백을 호출 합니다.Core Image will invoke the given callback between filters when processing an image for output or display.
  • 이제 앱은 처리 전후에 색 공간을 변환 하 여 핵심 이미지 컨텍스트의 작업 색 공간 외부에 있는 색 공간에서 이미지를 처리할 수 있습니다.The app can now process images in a color space outside of the Core Image context's working color space by converting in and out of the color space before and after processing.
  • 이제 코어 이미지 커널이 특정 픽셀 출력 형식을 요청할 수 있습니다.The Core Image kernel can now request a specific pixel output format.
  • CINinePartTitled, CINinePartStretched, CIHueSaturationValueGradient, CIEdgePreserveUpsampleFilterCIClamp와 같은 새 이미지 필터가 추가 되었습니다.The following new image filters have been added: CINinePartTitled, CINinePartStretched, CIHueSaturationValueGradient, CIEdgePreserveUpsampleFilter and CIClamp.

향상 된 Foundation FrameworkFoundation Framework Enhancements

MacOS Sierra에 대 한 Foundation Framework의 향상 된 기능은 다음과 같습니다.The following enhancement have been made to the Foundation Framework for macOS Sierra:

  • NSDimentions API를 사용 하 여 대량, 길이, 속도, 기간 및 온도와 같은 가장 일반적인 물리적 단위를 표현 하 고, 변환 하 고, 표시 합니다.Use the NSDimentions API for representing, converting and displaying many of the most common physical units such as mass, length, speed, duration and temperature.
  • ISO 8601 형식의 날짜를 구문 분석 하 고 생성 하려면 NSISO8601DateFormatter 클래스를 사용 합니다.Use the NSISO8601DateFormatter class for parsing and generating ISO 8601 formatted dates.
  • NSDateInterval 클래스를 사용 하 여 간격을 비교 하 고 간격 교차로 테스트 하는 기간 등의 날짜 및 시간 간격 계산을 수행할 수 있습니다.Use the new NSDateInterval class to make date and time interval calculations such as durations, for comparing intervals and testing for interval intersections.
  • NSPersonNameComponentsFormatter 클래스를 사용 하 여 문자열에서 사람의 이름 요소를 구문 분석 합니다.Use the NSPersonNameComponentsFormatter class to parse the elements of a person's name from a string.
  • NSURLSessionTaskMetrics 클래스를 사용 하 여 URL 네트워킹 세션의 메트릭을 가져옵니다.Use the new NSURLSessionTaskMetrics class to obtain metrics for a URL networking session.

자세한 내용은 OS X v 10.12 및 iOS 10에 대 한 Apple의 기본 릴리스 정보를 참조 하세요.For more information, please see Apple's Foundation Release Notes for OS X v10.12 and iOS 10.

GameKit Framework의 향상 된 기능GameKit Framework Enhancements

MacOS Sierra에 대 한 GameKit 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the GameKit Framework for macOS Sierra:

  • Game Center 앱 은 macos에서 더 이상 사용 되지 않고 제거 되었습니다.The Game Center App has been deprecated and removed from macOS. 앱에서 GameKit를 사용 하는 경우 순위표 등과 같은 GameKit 기능을 표시 하는 고유한 인터페이스를 제공 해야 합니다 .If the app uses GameKit, it must present its own interface to display GameKit features such as leaderboards, etc.
  • 새 iCloud 전용 계정 유형은 Gkcloudplayer 클래스에 의해 구현 되었습니다.A new iCloud-only account type has been implemented by the GKCloudPlayer class.
  • GKGameSession 클래스는 Game Center에서 영구적 데이터 저장소를 관리 하기 위한 일반화 된 솔루션을 제공 합니다.The new GKGameSession class provides a generalized solution for managing persistent data storage on Game Center. GKGameSession은 플레이어의 목록을 유지 관리 하 고, 앱은 참가자 날짜가 플레이어 간에 저장, 검색 또는 교환 되는 방법과 시기를 구현 하는 일을 담당 합니다.GKGameSession maintains a list of players and the app is responsible form implementing how and when participant date is stored, retrieved or exchanged between players. 대부분의 경우 게임 세션은 기존 턴 기반 일치, 실시간 일치 또는 지속적인 게임 저장 방법을 바꿀 수 있습니다.In many instances Game Sessions can replace existing turn-based matches, real-time matches or persistent game save methods.

GamePlayKit Framework의 향상 된 기능GamePlayKit Framework Enhancements

MacOS Sierra에 대 한 GamePlayKit 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the GamePlayKit Framework for macOS Sierra:

  • 절차적 노이즈 생성이 추가 되었고 현실감를 자연스럽 게 볼 수 있는 질감으로 개선 하 고, 카메라 움직임에 현실감을 추가 하 고, 다양 한 게임 환경을 생성 하는 데 사용할 수 있습니다.Procedural noise generation has been added and can be used to enhance the realism in natural-looking textures, add realism to camera movements and help generate rich game worlds.
  • 효율적인 검색을 위해 공간 분할을 사용 하 여 게임 세계 데이터를 분할 합니다.Use Spatial Partitioning to partition the game world data for efficient searching.
  • GKMonteCarloStrategist(Monte 몬테카를로 전략가)가 가능한 이동 계산을 위해 추가 되었습니다.A new Monte Carlo strategist (GKMonteCarloStrategist) has been added for exhaustive possible move computation.
  • 게임 빌딩 AI를 향상 시키기 위해 새로운 의사 결정 트리 API (GKDecisionTreeGKDecisionNode)가 추가 되었습니다.A new Decision Tree API has been added (GKDecisionTree and GKDecisionNode) to enhance the game-building AI.
  • GKAgent3DGKGraphNode3D 클래스를 사용 하 여 기존 에이전트 및 경로 찾기 동작에 3d 지원이 추가 되었습니다.3D support has been added to existing agent and path-finding behaviors using the new GKAgent3D and GKGraphNode3D classes.
  • GKMeshGraph 클래스를 사용 하 여 고성능의 자연 스러운 경로를 제공 합니다.Use the new GKMeshGraph class to provide high-performance, natural-looking paths.
  • 새로운 GksceneGKSKNodeComponent 클래스를 사용 하면 GameplayKit와 SpriteKit를 보다 쉽게 결합할 수 있습니다.The new GKScene and GKSKNodeComponent classes make combining GameplayKit and SpriteKit easier than ever.

금속 프레임 워크 향상Metal Framework Enhancements

MacOS Sierra 용 금속 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the Metal Framework for macOS Sierra:

  • 3D 앱 및 게임에서는 이제 공간 분할 을 사용 하 여 GPU를 통해 복잡 한 장면 및 기 하 도형을 효율적으로 렌더링할 수 있습니다.3D apps and games can now use Tessellation to efficiently render complex scenes and geometry via the GPU.
  • 함수 특수화를 사용 하 여 장면에 대해 매우 최적화 된 재질 및 조명 조합 함수 컬렉션을 만듭니다.Use Function Specialization to create a highly-optimized collection of material and light combination functions for a scene.
  • 리소스 힙을 사용 하 고 메모리 부족 렌더링 대상을 사용 하 여 금속 기반 앱의 성능을 최적화 하기 위해 리소스 할당에 대 한 세분화 된 제어를 제공 합니다.Provide fine-grained control of resource allocation to optimize performance of Metal based apps using Resource Heaps and Memoryless Render Targets.

자세히 알아보려면 Apple의 금속 프로그래밍 가이드를 참조 하세요.To learn more, please see Apple's Metal Programming Guide.

모델 i/o 프레임 워크 향상Model I/O Framework Enhancements

MacOS Sierra에 대 한 모델 i/o 프레임 워크에서 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the Model I/O Framework for macOS Sierra:

  • 이제 USD 파일 형식이 지원 됩니다.The USD file format is now supported.
  • MDLMaterialPropertyGraph 클래스를 사용 하 여 모델에 대 한 런타임 변경을 쉽게 지원할 수 있습니다.Use the new MDLMaterialPropertyGraph class to easily support runtime changes to models.
  • 서명 된 거리 필드 지원은 MDLVoxelArray 클래스에 추가 되었습니다.Signed Distance Field support has been added to the MDLVoxelArray class.
  • MDLLightProbeIrradianceDataSource 클래스를 사용 하 여 밝은 프로브 배치를 지원 합니다.Use the new MDLLightProbeIrradianceDataSource class to assist in Light Probe placement.

사진 프레임 워크 향상Photos Framework Enhancements

MacOS Sierra에 대 한 사진 프레임 워크가 다음과 같이 향상 되었습니다.The following enhancement have been made to the Photos Framework for macOS Sierra:

  • 이제 사진 프레임 워크를 지 원하는 앱과 사진 및 카메라 앱 내부에서 사용할 수 있도록 사진 편집 확장 (라이브 사진 편집)을 사용할 수 있습니다.Live Photo editing is now available for apps that support the Photos framework and to photo editing extensions (for use inside of the Photos and Camera apps).
  • PHLivePhotoEditingContext 클래스를 사용 하 여 라이브 사진의 비디오 및 콘텐츠 모두에 편집 내용을 적용 합니다.Use the new PHLivePhotoEditingContext class to apply edits to both the video and still content of Live Photos.
  • CIImageProcessorInputCIImageProcessorOutput 클래스를 사용 하 여 새 핵심 이미지 프로세서 기능을 활용 하 여 편집을 수행 합니다.Use the CIImageProcessorInput and CIImageProcessorOutput classes to take advantage of the new Core Image processor feature to perform edits.
  • 라이브 사진을 지원 하기 위해 PHLivePhotoPhlivephotoview 클래스는 iOS에서 macos로 이식 되었습니다.To support Live Photos, the PHLivePhoto and PHLivePhotoView classes have been ported from iOS to macOS.

SceneKit Framework의 향상 된 기능SceneKit Framework Enhancements

MacOS Sierra에 대 한 SceneKit 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the SceneKit Framework for macOS Sierra:

  • 이제에는 더 간단한 자산 제작을 통해 보다 현실적인 결과를 제공 하는 새로운 .PBR (물리적 기반 렌더링) 시스템이 포함 되어 있습니다.Now includes a new Physically Based Rendering (PBR) system for more realistic results with simpler asset authoring.
  • SCNLightingModelPhysicallyBased 음영 모델을 사용 하 여 세 가지 기본 속성 (Diffuse, MetalnessRoughness)만 필요로 하는 동안 광범위 한 사실적인 음영 효과를 제품 합니다.Use the new SCNLightingModelPhysicallyBased shading model to product a wide range of realistic shading effects while requiring only three fundamental properties (Diffuse, Metalness and Roughness).
  • .PBR 음영은 환경 기반 조명에서 가장 잘 작동 하므로 LightingEnvironment 속성을 사용 하 여 이미지 기반 조명을 황갈색 전체 장면에 할당 합니다.Since PBR shading works best with environment-based lighting, use the LightingEnvironment property to assign image-based lighting to tan entire scene.
  • IESProfileURL 속성을 사용 하 여 강도 (lumens) 및 색 온도 (켈빈)와 같은 실제 값의 조명 기반을 정의 하는 실제 조명 설비를 가져옵니다.Use the IESProfileURL property to import real-world light fixtures that define lighting base on real-world values such as intensity (in lumens) and color temperature (in degrees Kelvin).
  • Scncamera 클래스는 HDR 기능 및 효과를 사용 하 여 더 큰 현실감를 제공할 수 있습니다.The SCNCamera class can provide greater realism by using HDR features and effects. 자동 효과를 만들거나 vignetting, 색 fringing 및 색을 사용 하 여 게임에 filmatic 효과를 추가 하려면 적응 노출을 사용 합니다.Use adaptive exposure to create automatic effects or use vignetting, color fringing and color grading to add filmatic effects to the game.
  • .PBR 및 HDR 카메라 기능 모두 기존 렌더링 기술 보다 더 나은 결과를 제공 하므로 이제 SceneKit는 선형 색 공간에서 모든 색 계산을 수행 합니다 (넓은 색 장치 디스플레이에서 P3 색 영역 사용).Both PBR and HDR camera features provide better results than traditional rendering techniques and, as a result, SceneKit now performs all color calculations in a linear color space (using P3 color gamut on wide-color device displays).
  • 색 프로필 정보를 읽어 SceneKit 색이 모든 색과 일치 합니다.SceneKit now color matches all colors by reading the color profile information.
  • SceneKit는 모든 셰이더 형식에 대해 선형 RGB 색 공간의 색 구성 요소 값을 해석 합니다.SceneKit interprets color component values in a linear RGB color space for all shader types.
  • SceneKit는 질감 이미지에서 색 프로필 정보를 읽고 조정 하므로 모든 이미지에 대 한 자산 카탈로그를 사용 하 여이 정보가 제공 되는지 확인 합니다.Since SceneKit reads and adjust for color profile information in texture images, use Asset Catalogs for all images to ensure this information is provided.
  • Info.plist에서 SCNDisableLinearSpaceRenderingSCNDisableWideGamut 키를 지정 하 여 선형 색 공간 렌더링과 와이드 색을 모두 사용 하지 않도록 설정할 수 있습니다.Both linear color space rendering and wide-color can be disabled by specifying the SCNDisableLinearSpaceRendering and SCNDisableWideGamut keys in the app's Info.plist.
  • SCNGeometryPrimitiveTypePolygon 클래스를 사용 하 여 geometry를 지정 하기 위해 파일에서 로드 되거나 프로그래밍 방식으로 생성 되는 임의의 다각형 primates을 빌드합니다.Build arbitrary polygon primates (either loaded from files or generated programmatically) to specify geometry with the new SCNGeometryPrimitiveTypePolygon class.

향상 된 보안 프레임 워크Security Framework Enhancements

MacOS Sierra에 대 한 보안 프레임 워크의 향상 된 기능은 다음과 같습니다.The following enhancement have been made to the Security Framework for macOS Sierra:

  • SecKey 인터페이스는 모든 플랫폼 (iOS, tvOS, watchOS 및 macOS)에서 현대화 되 고 통합 되었습니다.The SecKey interface has been modernized and unified across all platforms (iOS, tvOS, watchOS and macOS).

SpriteKit Framework의 향상 된 기능SpriteKit Framework Enhancements

MacOS Sierra에 대 한 SpriteKit 프레임 워크에 대 한 다음과 같은 기능이 향상 되었습니다.The following enhancement have been made to the SpriteKit Framework for macOS Sierra:

  • 이제 Tilemaps는 SKTileMapMode, SKTileGroup, SKTileGroupRuleSKTileSet 클래스를 사용 하 여 2D, 2.5 D 및 사이드 스크롤 게임을 위한 정사각형, 육각형 및 등각 타일 셰이프를 지원 합니다.Tilemaps now support square, hexagonal and isometric tile shapes for 2D, 2.5D and side-scrolling games using the SKTileMapMode, SKTileGroup, SKTileGroupRule and SKTileSet classes.
  • SKWarpGeometry 클래스를 사용 하 여 SKSpriteNode 또는 SKEffectNode 렌더링을 늘이거나 왜곡할 수 있습니다.Use the new SKWarpGeometry class to stretch or distort SKSpriteNode or SKEffectNode rendering. 새 고 기능 클래스를 사용 하 여 비틀기 효과 간의 전환에 애니메이션 효과를 적용할 수 있습니다.The new SKAction class can be used to animate transitions between warp effects.
  • 사용자 지정 셰이더는 특성 값 (SKAttributeValue)을 제공 하 여 셰이더를 사용 하는 각 노드에서 별도로 구성할 수 있는 특성 (SKAttribute)을 제공할 수 있습니다.Custom shaders can provide attributes (SKAttribute) that can be configured separately by each node that uses the shader by supplying an Attribute Value (SKAttributeValue).
  • 지 수 클래스는 장면을 렌더링 하는 시기와 방법을 세밀 하 게 제어할 수 있는 여러 가지 새로운 메서드를 제공 합니다.The SKView class provides several new methods to give fine-grained control over when and how a scene is rendered.

새 프레임 워크New Frameworks

MacOS Sierra에 다음 프레임 워크가 추가 되었습니다.The following frameworks have been added to macOS Sierra:

  • 인 텐트 프레임 워크 -이 프레임 워크를 사용 하면 앱에서 위치 또는 사용자 동작과 같은 상호 작용을 검사 하 고 해당 정보에 따라 동작을 수행할 수 있습니다.Intents Framework - This framework allow the app to examine interactions (such as location or user actions), and take action based on that information.
  • SafariServices framework -이 프레임 워크를 사용 하면 앱에서 Macos와 iOS 모두에 대해 Safari 용 앱 확장 (예: 콘텐츠 차단)을 개발할 수 있습니다.SafariServices Framework - This framework allow the app to develop app extensions for Safari (such as content blockers) for both macOS and iOS.