macOS Big Sur takes the most advanced operating system in the world to a whole new level of power and beauty, making your apps look better than ever on an all-new interface. New widget features and the new widget gallery help you deliver more value to your users. Adding intelligence to your apps with machine learning is even simpler and more extensive with new tools, models, training capabilities, and APIs. You can create more powerful Mac versions of your iPad apps with Mac Catalyst. And you can now easily bring your extensions to Safari — and to the App Store.
All-new Interface
On Mac OS X, if I send SIGQUIT to my C program, it terminates, but there is no core dump file. Do you have to manually enable core dumps on Mac OS X (how?), or are they written to somewhere else i. Visual Studio 2019 for Mac. Develop apps and games for iOS, Android and using.NET. Download Visual Studio for Mac. Create and deploy scalable, performant apps using.NET and C# on the Mac. Develop libraries with the.NET Core CLI.NET Standard versions and the platforms they support. Visual Studio 2019 for Mac Release Notes; Next steps. In this tutorial, you created a solution and a library project, and added a console app project that uses the library. In the next tutorial, you add a unit test project to the solution.
macOS Big Sur brings a new design that’s been finely tuned for the powerful features that make a Mac a Mac. Core features, such as the menu bar and Dock, take advantage of the large Mac display, with translucent backings and spacious pull-down menus. The new Control Center, designed just for Mac, provides quick access to controls while keeping the menu bar clutter-free. Notification Center puts recent notifications and powerful new widgets together in a single view for at-a-glance information as you work. And a streamlined new design for apps features full-height sidebars and integrated toolbar buttons.
Widgets
Easily build widgets using the WidgetKit framework and the new widget API for SwiftUI. Widgets now come in multiple sizes, and users can visit the new widget gallery to search, preview sizes, and add them to Notification Center to access important details at a glance.
Safari Extensions
With support for the popular WebExtension API, it’s even easier to bring powerful extensions to Safari. Xcode 12 even includes a porting tool to streamline the process.
The new Extensions category on the Mac App Store showcases Safari extensions, with editorial spotlights and top charts to help users discover and download great extensions from the developer community.
Machine Learning
With macOS Big Sur, creating apps that leverage the power of machine learning is even easier and more extensive with additional tools in Core ML for model deployment, new models and training capabilities in Create ML, more APIs for vision and natural language, and improved resources for training on Mac and converting models to Core ML format.
Mac Catalyst
Create even more powerful Mac versions of your iPad apps. Apps built with Mac Catalyst now take on the new look of macOS Big Sur and help you better define the look and behavior of your apps. You can choose to turn off automatic scaling of iPad controls and layout, allowing you to precisely place every pixel on the screen. Provide full control of your app using just the keyboard, take advantage of the updated Photos picker, access more iOS frameworks, and more.
User privacy on the App Store.
Later this year, the Mac App Store will help users understand apps’ privacy practices. You’ll need to enter your privacy practice details into App Store Connect for display on your product page.
Universal App Quick Start Program
Get your apps ready for Apple Silicon Macs. Create next-generation Universal apps that take full advantage of the capabilities the new architecture has to offer. Get all the tools, resources, support, and even access to prototype hardware you’ll need. You can also watch a collection of videos from WWDC20 to help you get started.
Tools and resources
Use Xcode 12 beta and these resources to build apps for macOS Big Sur.
The technologies in the Core Services layer are called core services because they provide essential services to apps but have no direct bearing on the app’s user interface. In general, these technologies are dependent on frameworks and technologies in the two lowest layers of OS X—that is, the Core OS layer and the Kernel and Device Drivers layer.
High-Level Features
The following sections describe some of the key technologies available in the Core Services layer.
Social Media Integration
Two frameworks that make it easy for users to share content with various social networking services from within your app:
- Accounts (
Accounts.framework
). The Accounts framework provides access to supported account types that are stored in the Accounts database. - Social (
Social.framework
). The Social framework provides an API for sending requests to supported social media services that can perform operations on behalf of your users.
When you use the Accounts framework, your app does not need to be responsible for storing account login information because an
ACAccount
object stores the users login credentials for services such as Twitter and Facebook. Users can grant your app permission to use their account login credentials, bypassing the need to enter their user name and password. If no account for a particular service exists in the user’s Accounts database, you can help them create and save an account from within your app. To learn more about the Accounts framework, see Accounts Framework Reference. The Social framework provides a simple interface for accessing the user’s social media accounts, including Facebook and Sina Weibo, a Chinese microblogging website. Apps can use this framework to post status updates and images to a user’s account. The Social framework works with the Accounts framework to provide a single sign-on model for the user and to ensure that access to the user’s account is approved. For more information about the Social API, see Social Framework Reference.
iCloud Storage
From a user’s perspective, iCloud is a simple feature that automatically makes their personal content available on all of their devices. When you adopt iCloud, OS X initiates and manages uploading and downloading of data for the devices associated with an iCloud account.
There are three types of iCloud storage that your app can take advantage of:
- Document storage. Document storage is for user-visible file-based content, such as presentations or documents, or for other substantial file-based content, such as the state of a complex game.
- Key-value storage. Key-value storage is for sharing small amounts of data—such as preferences or bookmarks—among instances of your app.
- Core Data storage. Core Data storage supports server-based, multidevice database solutions for structured content. (Core Data storage is built on document storage.)
Many apps can benefit from using more than one type of storage. For example, a complex strategy game could employ document storage for its game state, and key-value storage for scores and achievements.
Important: To use iCloud storage in your app, you need to get an appropriate provisioning profile for your development device and request the appropriate entitlements in your Xcode project. To learn more about these tasks, see Provisioning Your System and Configuring Entitlements in Tools Workflow Guide for Mac.
To learn more about adding iCloud storage to your app, read iCloud Design Guide.
CloudKit
CloudKit provides apps with more control over when and how data is stored in iCloud. Unlike iCloud Storage, CloudKit is a complimentary service that works with your apps existing data structures. CloudKit records include support for:
- Saving, searching, and fetching data for specific to an individual user
- Saving, searching, and fetching data in a public area shared by all users
CloudKit has minimal caching and relies on a network connection. To learn more about using CloudKit, see the CloudKit Framework Reference
File Coordination
File coordination eliminates file-system inconsistencies due to overlapping read and write operations from competing processes. When you use the
NSDocument
class from the AppKit framework, you get file coordination with very little effort. To use file coordination explicitly, you employ the NSFileCoordinator
class and the NSFilePresenter
protocol, both from the Foundation framework.The file coordination APIs let you assert your app’s ownership of files and directories. When another process attempts access, you have a chance to respond. For example, if another app attempts to read a document that your app is editing, you have a chance to write unsaved changes to disk before the other app is allowed to do its reading.
You use file coordination only with files that users conceivably might share with other users, not (for example) with files written to a cache or other temporary locations. File coordination is an enabling technology for automatic document saving, App Sandbox, and other features introduced in OS X v10.7. For more information on file coordination, see Coordinating File Access With Other Processes in Mac App Programming Guide.
Bundles and Packages
A feature integral to OS X software distribution is the bundle mechanism. Bundles encapsulate related resources in a hierarchical file structure but present those resources to the user as a single entity. Programmatic interfaces make it easy to find resources inside a bundle. These same interfaces form a significant part of the OS X internationalization strategy.
Apps and frameworks are only two examples of bundles in OS X. Plug-ins, screen savers, and preference panes are also implemented using the bundle mechanism. Developers can also use bundles for their document types to make it easier to store complex data.
Packages are another technology, like bundles, that make distributing software easier. A package—also referred to as an installation package—is a directory that contains files and directories in well-defined locations. The Finder displays packages as files. Double-clicking a package launches the Installer app, which then installs the contents of the package on the user’s system.
For an overview of bundles and to learn how they are constructed, see Bundle Programming Guide.
Internationalization and Localization
Localization (which is the process of adapting your app for use in another region) is necessary for success in many foreign markets. Users in other countries are much more likely to buy your software if the text and graphics reflect their own language and culture. Before you can localize an app, though, you must design it in a way that supports localization, a process called internationalization. Properly internationalizing an app makes it possible for your code to load localized content and display it correctly.
Internationalizing an app involves the following steps:
- Use Unicode strings for storing user-visible text.
- Extract user-visible text into “strings” resource files.
- Use nib files to store window and control layouts whenever possible.
- Use international or culture-neutral icons and graphics whenever possible.
- Use Cocoa or Core Text to handle text layout.
- Support localized file-system names (also known as display names).
- Use formatter objects in Core Foundation and Cocoa to format numbers, currencies, dates, and times based on the current locale.
For details on how to support localized versions of your software, see Internationalization and Localization Guide. For information on Core Foundation formatters, see Data Formatting Guide for Core Foundation.
Block Objects
Block objects, or blocks, are a C-level mechanism that you can use to create an ad hoc function body as an inline expression in your code. In other languages and environments, a block is sometimes called a closure or a lambda. You use blocks when you need to create a reusable segment of code but defining a function or method might be a heavyweight (and perhaps inflexible) solution. For example, blocks are a good way to implement callbacks with custom data or to perform an operation on all the items in a collection. Many OS X technologies—for example Game Kit, Core Animation, and many Cocoa classes—use blocks to implement callbacks.
The compiler provides support for blocks using the C, C++, and Objective-C languages. For more information about how to create and use blocks, see Blocks Programming Topics.
Grand Central Dispatch
Grand Central Dispatch (GCD) provides a simple and efficient API for achieving the concurrent execution of code in your app. Instead of providing threads, GCD provides the infrastructure for executing any task in your app asynchronously using a dispatch queue. Dispatch queues collect your tasks and work with the kernel to facilitate their execution on an underlying thread. A single dispatch queue can execute tasks serially or concurrently, and apps can have multiple dispatch queues executing tasks in parallel.
There are several advantages to using dispatch queues over traditional threads. One of the most important is performance. Dispatch queues work more closely with the kernel to eliminate the normal overhead associated with creating threads. Serial dispatch queues also provide built-in synchronization for queued tasks, eliminating many of the problems normally associated with synchronization and memory contention normally encountered when using threads.
In addition to providing dispatch queues, GCD provides three other dispatch interfaces to support the asynchronous design approach offered by dispatch queues:
Dispatch sources provide a way to handle the following types of kernel-level events that is more efficient than BSD alternatives:
- Timer notifications
- Signal handling
- Events associated with file and socket operations
- Significant process-related events
- Mach-related events
- Custom events that you define and trigger
- Asynchronous I/O through dispatch data and dispatch I/O
Dispatch groups allow one thread (or task) to block while it waits for one or more other tasks to finish executing.
Dispatch semaphores provide a more efficient alternative to the traditional semaphore mechanism.
For more information about how to use GCD in your apps, see Concurrency Programming Guide.
Bonjour
Bonjour is Apple’s implementation of the zero-configuration networking architecture, a powerful system for publishing and discovering services over an IP network. It is relevant to both software and hardware developers.
Incorporating Bonjour support into your software improves the overall user experience. Rather than prompt the user for the exact name and address of a network device, you can use Bonjour to obtain a list of available devices and let the user choose from that list. For example, you could use it to look for available printing services, which would include any printers or software-based print services, such as a service to create PDF files from print jobs.
Developers of network-based hardware devices are strongly encouraged to support Bonjour. Bonjour alleviates the need for complicated setup instructions for network-based devices such as printers, scanners, RAID servers, and wireless routers. When plugged in, these devices automatically publish the services they offer to clients on the network.
Core Data For Mac Os Versions
For information on how to incorporate Bonjour services into a Cocoa app, see Bonjour Overview. To incorporate Bonjour into a non-Cocoa app, see DNS Service Discovery Programming Guide.
Security Services
OS X security is built upon several open source technologies—including BSD and Kerberos—adds its own features to those technologies. The Security framework (
Security.framework
) implements a layer of high-level services to simplify your security solutions. These high-level services provide a convenient abstraction and make it possible for Apple and third parties to implement new security features without breaking your code. They also make it possible for Apple to combine security technologies in unique ways. OS X provides high-level interfaces for the following features:
- User authentication
- Certificate, Key, and Trust Services
- Authorization Services
- Secure Transport
- Keychain Services
- Smart cards with the CryptoTokenKit framework
Security Transforms, provide a universal context for all cryptographic work. A cryptographic unit in Security Transforms, also known as a transform, can be used to perform tasks such as encryption, decryption, signing, verifying, digesting, and encoding. You can also create custom transforms. Transforms are built upon GCD and define a>Model-View-Controller design pattern. Instead of defining data structures programmatically, you use the graphical tools in Xcode to build a schema representing your data model. At runtime, entities are created, managed, and made available through the Core Data framework with little or no coding on your part.
Core Data provides the following features:
- Storage of object data in mediums ranging from an XML file to a SQLite database
- Management of undo/redo operations beyond basic text editing
- Support for validation of property values
- Support for propagating changes and ensuring that the relationships between objects remain consistent
- Grouping, filtering, and organizing data in memory and transferring those changes to the user interface through Cocoa bindings
Core Data also includes incremental storage, a work concurrency model, and nested managed object contexts.
- Using the incremental store classes (
NSIncrementalStore
andNSIncrementalStoreNode
), you can create Core Data stores that connect to any possible data source. - The work concurrency model API enables your app to share unsaved changes between threads across the object graph efficiently.
- You can create nested managed object contexts, in which fetch and save operations are mediated by the parent context instead of a coordinator. This pattern has a number of usage scenarios, including performing background operations on a second thread or queue and managing discardable edits, such as in an inspector window or view.
For more information, see Core Data Programming Guide.
Event Kit
Event Kit (
EventKit.framework
) provides an interface for accessing a user’s calendar events and reminder items. You can use the APIs in this framework to get existing events and to add new events to the user’s calendar. Events that are created using Event Kit are automatically propagated to the CalDAV or Exchange calendars on other devices, which allows your app to display up-to-date calendar information without requiring users to open the Calendar app. (Calendar events can include configurable alarms with rules for when they should be delivered.)You can also use Event Kit APIs to access reminder lists, create new reminders, add an alarm to a reminder, set the due date and start date of a reminder, and mark a reminder as complete. To learn more about the Event Kit APIs, see Event Kit Framework Reference.
Foundation and Core Foundation
The Foundation and Core Foundation frameworks are essential to most types of software developed for OS X. The basic goals of both frameworks are the same:
- Define basic object behavior and introduce consistent conventions for object mutability, object archiving, notifications, and similar behaviors.
- Define basic object types representing strings, numbers, dates, data, collections, and so on.
- Support internationalization with bundle technology and Unicode strings.
- Support object persistence.
- Provide utility classes that access and abstract system entities and services at lower layers of the system, including ports, threads, processes, run loops, file systems, and pipes.
The difference between Foundation (
Foundation.framework
) and Core Foundation (CoreFoundation.framework
) is the language environment in which they are used. Foundation is an Objective-C framework and is intended to be used with all other Objective-C frameworks that declare methods taking Foundation class types as parameters or with return values that are Foundation class types. Along with the AppKit and Core Data frameworks, Foundation is considered to be a core framework for app development (see Cocoa Umbrella Framework). Core Foundation, on the other hand, declares C-based programmatic interfaces; it is intended to be used with other C-based frameworks, such as Core Graphics. Note: Although you can use Core Foundation objects and call Core Foundation functions in Swift or Objective-C projects, there is rarely a reason for doing so.
In its implementation, Foundation is based on Core Foundation. And, although it is C based, the design of the Core Foundation interfaces are more object-oriented than C. As a result, the opaque types (often referred to as objects) you create with Core Foundation interfaces operate seamlessly with the Foundation interfaces. Specifically, most equivalent Foundation classes and Core Foundation opaque types are toll-free bridged; this means that you can convert between object types through simple typecasting.
Foundation and Core Foundation provide basic data types and data management features, including the following:
- Collections
- Bundles and plug-ins
- Strings
- Raw data blocks
- Dates and times
- Preferences
- Streams
- URLs
- XML data
- Locale information
- Run loops
- Ports and sockets
- Notification Center interaction
- Interprocess communication between apps using XPC
For an overview of Foundation, read the introduction to Foundation Framework Reference. For an overview of Core Foundation, read Core Foundation Design Concepts.
Quick Look
Quick Look enables apps such as Spotlight and the Finder to display thumbnail images and full-size previews of documents. If your app defines custom document formats that are different from the system-supported content types, you should provide a Quick Look generator for those formats. (Generators are plug-ins that convert documents of the appropriate type from their native format to a format that Quick Look can display as thumbnails and previews to users.) Quick Look also allows users of your app to preview the contents of a document that’s embedded as a text attachment without requiring them to leave the app.
For information about supporting Quick Look for your custom document types, see Quick Look Programming Guide and Quick Look Framework Reference for Mac. The related Quick Look UI framework is briefly described in Quick Look UI.
Social Framework
The Social framework (
Social.framework
) helps you integrate supported social networking services into your app by providing a template for creating HTTP requests and a generalized interface for posting requests on the user’s behalf. You can also use the Social framework to retrieve information for integrating a user’s social networking accounts into your app. To learn more about the Social API, see Social Framework Reference.
Store Kit
Store Kit (
StoreKit.framework
) enables you to request payment from a user to purchase additional app functionality or content from the Mac App Store. Store Kit handles the financial aspects of a transaction, processing the payment request through the user’s iTunes Store account. Store Kit then provides your app with information about the purchase. Your app handles the other aspects of the transaction, including the presentation of a purchasing interface and the downloading (or unlocking) of the appropriate content. This division of labor gives you control over the user experience. You also decide on the delivery mechanism that works best for your app.
For more information about Store Kit, read In-App Purchase Programming Guide and Store Kit Framework Reference.
WebKit
The WebKit framework (
WebKit.framework
) enables your app to display HTML content. It has two subframeworks: Web Core and JavaScript Core. Web Core is for parsing and displaying HTML content; JavaScript Core is for parsing and executing JavaScript code. WebKit also lets you create text views containing editable HTML. With this basic editing support, users can replace text and manipulate the document text and attributes, including CSS properties. WebKit also supports creating and editing content at the DOM level of an HTML document. For example, you could extract the list of links on a page, modify them, and replace them prior to displaying the document in a web view.
For information on how to use WebKit, see WebKit Objective-C Programming Guide.
Core Data For Mac Os 10.13
Other Frameworks in the Core Services Layer
The Core Services layer of OS X also includes the following frameworks:
- Collaboration (
Collaboration.framework
). The Collaboration framework provides a set of Objective-C classes for displaying sharing account information and other identity-related user interfaces. With this API, apps can display information about users and groups and display a panel for selecting users and groups during the editing of access control lists. For related information, see Identity Services. - Input Method Kit (
InputMethodKit.framework
). Input Method Kit helps you build input methods for Chinese, Japanese, and other languages. The framework handles tasks such as connecting to clients and running candidate windows. To learn more, see Input Method Kit Framework Reference. - Latent Semantic Mapping (
LatentSemanticMapping.framework
). Latent Semantic Mapping supports the classification of text and other token-based content into developer-defined categories, based on semantic information latent in the text. Products of this technology are maps, which you can use to analyze and classify arbitrary text—for example, to determine, if an email message is consistent with the user’s interests. For information about the Latent Semantic Mapping framework, see Latent Semantic Mapping Reference.
Core Data For Mac Os High Sierra
Copyright © 2004, 2015 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2015-09-16