May 26, 2020  And as updates that change the macOS version number become available, this article is updated to show the latest version of that macOS. If your Mac is using an earlier version of any Mac operating system, you should install the latest Apple software updates, which can include important security updates and updates for the apps installed. Oct 03, 2015  Mac Programming for Absolute Beginners by Wallace Wang in DJVU, DOC, FB2 download e-book. Welcome to our site, dear reader! All content included on our site, such as text, images, digital downloads and other, is the property of it's content suppliers and protected.

Macos programming for absolute beginners
< Computer Programming

About the platform[edit]

macOS is the primary operating system for the Macintosh computer. It was originally a system designed privately by Apple Inc, however with Mac OS X, it has been based on Unix. Specifically, a modified FreeBSD operating system called 'Darwin'.

There are many different kinds of software that can be developed for Mac OS X. People generally think of applications, but we'll briefly cover some of the other kinds.

Types of Software for Mac OS X[edit]

Applications[edit]

Applications are what people generally think of when they think about software for Mac OS X. Cocoa applications include: Finder, Mail, Address Book, Safari, Microsoft Word, and Microsoft Excel. Anybody can develop applications using Apple's free development tools which includes XCode. Mac OS X applications are developed using Objective-C though there are other possible programming languages that could be used.

The most popular languages for use on the macOS platform is Objective-C which could be thought of as Mac OS X's 'native language' since the Mac OS X libraries, or 'frameworks', all have an Objective-C interface. Objective-C includes everything that plain C can do, and adds object-oriented programming. See: Objective-C.

C++ can be used in developing for the Mac, but generally, it is used in addition to Objective-C rather than being in place of Objective-C. Using both Objective-C and C++ is called 'Objective-C++' and is considered to be optional when developing software for Mac OS X: C++

See Programming:Objective-C for a lesson on the basics of Objective-C [1] may also be of assistance.

Some preliminary thoughts:

Objective-C is the language most commonly used in Mac OS Programming. Objective-C entered Mac OS X and has ancestry in NeXT. Cocoa. Before you learn Mac programming you must know the basics of C since it is the basis for Objective-C.

There used to be three separate APIs for developing a Mac application with a GUI:

1. Classic (Mac OS 9 and lower). Developing for the Classic API is no longer done. When Mac OS X first came out, users and developers had a huge investment in software written for Mac Classic OS and Mac OS X used to have an emulation mode so that users could run their old software. Apple has long since stopped support of the Classic API and Classic emulation in Mac OS X.

2. Carbon (Mac OS 8.5 up to and including Mac OS X 10.6 Snow Leopard). Carbon was an API for developers to update their applications that used the Classic API to be run without the Classic emulator. Carbon was a great way that Apple provided developers to upgrade their software to run on Mac OS X without having to totally rewrite their software, but Carbon, like Classic, is no longer supported by Apple.

3. Cocoa (All versions of Mac OS X). Cocoa is the most native API that can be used to develop applications for Mac OS X that are truly 'Mac-like'. Generally, Objective-C will be used along with Cocoa, though there are other options such as Cocoa-AppleScript and Cocoa-Python, but Cocoa-Objective-C is really the 'mainstream' way to develop Cocoa applications.

Resource Forks Files in Mac OS X have a feature that is unique to Mac OS and that is that each file on disk can have two 'forks'. This feature used to be used for Classic and Carbon applications to separate code from resources (such as menus, windows, etc.), and the Mac OS X file system still supports two forks, but you should only use the 'data fork'. The resource fork is non-standard and can be lost when transferring Mac files to other file systems.

AppleScripts[edit]

Another 'native language' for developing Mac OS X applications is AppleScript. AppleScript is a language that Apple invented to automate repetitive tasks. The AppleScript application is located on your Mac at /Applications/Utilities/AppleScript Editor. AppleScript can be used to record AppleEvents, the events that applications send to themselves or to other applications. Why don't you try it out. Open AppleScript Editor, press the record button, do some things with your other applications and watch the script write itself. AppleScript can be used alone or it can be used along with XCode to develop Cocoa Applications using mostly AppleScript instead of Objective-C. This option is mostly for experienced AppleScript programmers who don't know Objective-C.

Automator Workflows[edit]

Apple also provides an application called 'Automator' that can be used to easily automate repetitive tasks. It is located at /Applications/Automator.app

Shell Scripts[edit]

Mac OS X has an application called Terminal that provides a command-line interface to Mac OS X. It is possible to develop scripts for the command line. Terminal.app is located at /Applications/Utilities/Terminal.app To create a shell script, you need a text editor. There is a text editor that comes with Mac OS X called 'TextEdit.app'. It is located in /Applications/TextEdit.app. But actually, what is better than TextEdit is a program such as TextWrangler.app which is available for free from the following link: http://www.barebones.com/products/textwrangler/

The shell that Terminal.app uses by default is called 'bash'. Here is a simple tutorial on developing bash scriptshttp://www.maclife.com/article/columns/terminal_101_automate_terminal_bash_scripts

We won't go any more deeply into shell scripts here in this wikibook, but it's just good to know what they are. You can always google for more information now that you know what to google for.

Command Line Tools[edit]

When you open Terminal and you learn how to type in commands. The commands are usually command-line tools or scripts. Above, we just talked about developing your own scripts with a text editor. It's also possible to develop your own command-line tools, using XCode. This is an advanced thing to do. Usually, power-users will write a shell-script (or some other kind of thing such as an AppleScript or an Automator Workflow) but it's good to know what a command-line tool is. Command-line tools have a textual user-interface rather than a graphical user interface (GUI).

Java[edit]

Java used to be treated by Apple as a 'first class language' to develop for Mac OS, however in recent years, Apple has less support for Java. Now with Mac OS X 10.7 'Lion' and 10.8 'Mountain Lion', Java doesn't even come pre-installed in Mac OS X. Java is still available, but users have to download Java from Oracle's website and install it themselves. Apple's Mac App Store doesn't even allow Java apps to be sold at their store calling Java 'deprecated'.

However, there still are Mac developers who use Java because it has the advantage of being cross-platform compatible. For example, the same source-code can be used to generate software that runs on Mac, Windows, and Linux.

Apple has said that Java reduces the Mac to the 'least common denominator'. That's why they support it less.

Python[edit]

Python is somewhat supported by Apple. In fact, Python is shipped with Mac OS X and is part of the System Folder. There are third-party libraries that allow developers to develop applications using Python and Cocoa together, but these are not very well maintained, and Python on the Mac is most suitable for developing command-line utilities, or cross-platform scripts that aren't really very Mac-like.

Ruby[edit]

Similar to Python.

Websites[edit]

Most Mac users use Safari for their web browser. Safari uses the standards set by w3c.org You can develop websites that work with Safari by following the standards of the w3c.org. Remember to validate your HMTL, CSS, and JavaScript.

HTML Validator:http://validator.w3.org/

CSS Validator:http://jigsaw.w3.org/css-validator/

JavaScript Lint:http://www.javascriptlint.com/online_lint.php

Macos programming for the absolute beginner

If you're developing websites using your Mac and using Safari, remember to test your webpages on other platforms and with other web browsers.

Mac OS X Specific Languages[edit]

Objective-C is really the 'native' language for Mac OS X development

You could call AppleScript a 'native' language too, but it isn't really used to make commercial applications. It was designed to be used by real power-users to automate their tasks. Although it is possible to use AppleScript to build Cocoa applications in XCode, this would be more for users who already know AppleScript and don't want to learn Objective-C.

Mac OS X Frameworks[edit]

Retrieved from 'https://en.wikibooks.org/w/index.php?title=Computer_Programming/MacOS_Programming&oldid=3608589'

Macos Programming For Absolute Beginners

This document is the starting point for learning how to create Mac apps. It contains fundamental information about the OS X environment and how your apps interact with that environment. It also contains important information about the architecture of Mac apps and tips for designing key parts of your app.

At a Glance

Cocoa is the application environment that unlocks the full power of OS X. Cocoa provides APIs, libraries, and runtimes that help you create fast, exciting apps that automatically inherit the beautiful look and feel of OS X, as well as standard behaviors users expect.

Cocoa Helps You Create Great Apps for OS X

Macos Programming For Absol Computer

You write apps for OS X using Cocoa, which provides a significant amount of infrastructure for your program. Fundamental design patterns are used throughout Cocoa to enable your app to interface seamlessly with subsystem frameworks, and core application objects provide key behaviors to support simplicity and extensibility in app architecture. Key parts of the Cocoa environment are designed particularly to support ease of use, one of the most important aspects of successful Mac apps. Many apps should adopt iCloud to provide a more coherent user experience by eliminating the need to synchronize data explicitly between devices.

Relevant Chapters:The Mac Application Environment, The Core App Design, and Integrating iCloud Support Into Your App

Common Behaviors Make Apps Complete

During the design phase of creating your app, you need to think about how to implement certain features that users expect in well-formed Mac apps. Integrating these features into your app architecture can have an impact on the user experience: accessibility, preferences, Spotlight, services, resolution independence, fast user switching, and the Dock. /youtube-downloader-for-mac-mojave.html. Enabling your app to assume full-screen mode, taking over the entire screen, provides users with a more immersive, cinematic experience and enables them to concentrate fully on their content without distractions.

Relevant Chapters:Supporting Common App Behaviors and Implementing the Full-Screen Experience

Get It Right: Meet System and App Store Requirements

Macos Programming For Absol Pc

Configuring your app properly is an important part of the development process. Mac apps use a structured directory called a bundle to manage their code and resource files. And although most of the files are custom and exist to support your app, some are required by the system or the App Store and must be configured properly. The application bundle also contains the resources you need to provide to internationalize your app to support multiple languages.

Finish Your App with Performance Tuning

As you develop your app and your project code stabilizes, you can begin performance tuning. Of course, you want your app to launch and respond to the user’s commands as quickly as possible. A responsive app fits easily into the user’s workflow and gives an impression of being well crafted. You can improve the performance of your app by speeding up launch time and decreasing your app’s code footprint.

Relevant Chapter:Tuning for Performance and Responsiveness

How to Use This Document

This guide introduces you to the most important technologies that go into writing an app. In this guide you will see the whole landscape of what's needed to write one. That is, this guide shows you all the 'pieces' you need and how they fit together. There are important aspects of app design that this guide does not cover, such as user interface design. However, this guide includes many links to other documents that provide details about the technologies it introduces, as well as links to tutorials that provide a hands-on approach.

Macos Programming For Absol X

In addition, this guide emphasizes certain technologies introduced in OS X v10.7, which provide essential capabilities that set your app apart from older ones and give it remarkable ease of use, bringing some of the best features from iOS to OS X.

See Also

The following documents provide additional information about designing Mac apps, as well as more details about topics covered in this document:

  • To work through a tutorial showing you how to create a Cocoa app, see Start Developing Mac Apps Today.

  • For information about user interface design enabling you to create effective apps using OS X, see OS X Human Interface Guidelines.

  • To understand how to create an explicit app ID, create provisioning profiles, and enable the correct entitlements for your application, so you can sell your application through the Mac App Store or use iCloud storage, see App Distribution Guide.

  • For a general survey of OS X technologies, see Mac Technology Overview.

  • To understand how to implement a document-based app, see Document-Based App Programming Guide for Mac.

Macos Programming For Absol 3



Macos Programming For Absolute Beginners

Copyright © 2015 Apple Inc. All Rights Reserved. Terms of Use Privacy Policy Updated: 2015-03-09