05.01.2013 Views

Mac OS X Leopard - ARCAism

Mac OS X Leopard - ARCAism

Mac OS X Leopard - ARCAism

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

454<br />

CHAPTER 25 MAC <strong>OS</strong> X DEVELOPMENT: THE TOOLS<br />

The Project Assistant presents you will a long list of project templates, organized into several<br />

categories:<br />

Empty Project: This creates an Xcode project without applying any template.<br />

Action: This includes templates for creating Automator actions with AppleScript,<br />

Cocoa, or Shell Script. There is also a template for defining new data types.<br />

Application: This includes templates for creating AppleScript applications, Carbon<br />

applications in C or C++, and Cocoa applications in Objective-C, Ruby, or Python.<br />

In addition to basic application templates, there are templates for document-based<br />

applications and AppleScript droplets. There are also templates specifically for creating<br />

Cocoa applications backed by Core Data.<br />

Audio Units: This includes templates for creating Core Audio plug-ins, known as Audio<br />

Units, in Carbon and Cocoa.<br />

Bundle: While most projects end up as bundles, there are generic bundle templates for<br />

Carbon, Cocoa, and C++. This is useful for creating your own plug-ins, or for other<br />

bundle types not specifically addressed by other templates.<br />

Command Line Utility: This includes templates for creating nongraphical programs to be<br />

run in Darwin. There are specific templates for writing programs with Core Foundation,<br />

the C framework that underlies Carbon and Cocoa; Foundation, the Objective-C<br />

framework from Cocoa; and Core Services, the C framework for many basic operating<br />

system services. There are also generic templates for writing utilities in C and C++.<br />

Dynamic Library: Dynamic libraries are bundles of reusable code that can be loaded at<br />

runtime. Xcode’s has dynamic library templates for Carbon, Cocoa, Ruby, BSD, and C++.<br />

External Build System: This generic template allows developers to use Xcode to organize<br />

and edit their programs, but use their own build systems.<br />

Framework: Cocoa frameworks are like dynamic libraries, except in addition to code they<br />

can contain other resources such as media files or Interface Builder’s nib files. They also<br />

have built-in versioning.<br />

Java: This includes templates for creating Java applets and tools, as well as standard, Java<br />

Native Interface and Java Web Start applications.<br />

Kernel Extension: This includes templates for creating extensions to the lowest level of the<br />

operating system: the kernel. In addition to a generic template, there is a template for<br />

creating device drivers using IOKit.<br />

Quartz Composer: We’ll discuss Quartz Composer in its own section, but in a nutshell,<br />

Quartz Composer compositions are bundles of graphic and programming logic that can be<br />

used alone or in other applications. Xcode provides several templates for applications and<br />

plug-ins built around these compositions.<br />

Standard Apple Plug-ins: Many Apple applications have plug-in architectures, allowing<br />

third-party developers to add functionality. To facilitate plug-in development, Xcode<br />

provides plug-in templates for Address Book, Xcode, Dashcode, Interface Builder, and Web<br />

Kit. There are also templates for creating bundled Core Image filters, called Image Units,<br />

as well as preference panels, screen savers, and sync schemas. If your application uses a<br />

custom data type, there are templates for creating plug-ins for Spotlight and Quick Look<br />

as well.<br />

Static Library: Static libraries are bundles of reusable code that must be linked to at<br />

compile time. Xcode includes templates for creating static libraries with Carbon, Cocoa,<br />

and BSD.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!