Programming Mac OS X : A GUIDE FOR UNIX DEVELOPERS KEVIN O’MALLEY MANNING Programming Mac OS X Programming Mac OS X A GUIDE FOR UNIX DEVELOPERS KEVIN O’MALLEY MANNING Greenwich (74° w. long.) For electronic information and ordering of this and other Manning books, go to www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact: Special Sales Department Manning Publications Co. 209 Bruce Park Avenue Fax: (203) 661-9018 Greenwich, CT 06830 email: orders@manning.com ©2003 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books they publish printed on acid-free paper, and we exert our best efforts to that end. Manning Publications Co. Copyeditor: Tiffany Taylor 209 Bruce Park Avenue Typesetter: Denis Dalinnik Greenwich, CT 06830 Cover designer: Leslie Haimes ISBN 1-930110-85-5 Printed in the United States of America 12345678910–VHG–05 040302 v PART 1OVERVIEW 1 1 ■ Welcome to Mac OS X 3 2 ■ Navigating and using Mac OS X 27 PART 2TOOLS 55 3 ■ Project Builder and Interface Builder 57 4 ■ Development tools 109 PART 3PROGRAMMING 169 5 ■ Objective-C and the Cocoa development frameworks 171 6 ■ Cocoa programming 203 7 ■ AppleScript programming 245 8 ■ Mac OS X and beyond 279 brief contents vii foreword xiii preface xv acknowledgments xviii about this book xix about the author xxiii about the cover illustration xxiv PART 1OVERVIEW 1 1 Welcome to Mac OS X 3 1.1 Introduction 4 Origins of Mac OS X 5 1.2 The Macintosh user interface 6 1.3 The Mac OS X user interface 8 The desktop 8 ■ Menus 8 ■ The Dock 10 Window layering 11 ■ Dialog boxes 11 ■ Drawers 12 Keyboard navigation 12 ■ Other interface features 13 1.4 The Mac OS X architecture 13 Architecture layers 15 ■ The kernel environment 16 Core Services layer 20 ■ Application Services layer 21 Application Environment layer 22 ■ Aqua 26 1.5 Summary 26 contents viii CONTENTS 2 Navigating and using Mac OS X 27 2.1 Introduction 28 2.2 Shells 29 Terminal features 31 2.3 Help system 32 Help Viewer 33 2.4 User accounts and privileges 33 Creating user accounts 34 2.5 Booting and default services 36 2.6 Programs and Mac OS X bundles 37 2.7 Security issues 39 2.8 File system 39 Finder 41 ■ Case sensitivity and pathname delimiters 43 2.9 Single-user mode 44 2.10 System log files 45 2.11 Processes management 45 2.12 Common commands and tools 46 2.13 Scripting languages 48 AppleScript 48 2.14 Development tools 50 2.15 X Window under Mac OS X 51 Installing the X server 52 2.16 UNIX to Mac OS X software projects 53 2.17 Summary 54 PART 2TOOLS 55 3 Project Builder and Interface Builder 57 3.1 Introduction 58 Macintosh Programmer’s Workbench 59 THINK Pascal and THINK C 59 ■ CodeWarrior 60 Project Builder and Interface Builder 60 3.2 Creating an application with Project Builder 62 CONTENTS ix 3.3 Project Builder in depth 67 Targets and build styles 67 ■ Project Builder’s UNIX tools 68 Project Builder’s interface 69 ■ Project Builder scenarios 78 3.4 Creating an application with Interface Builder 100 Interface Builder scenarios 101 3.5 Summary 108 4 Development tools 109 4.1 Introduction 110 4.2 UNIX development tools under Mac OS X 112 Editors 112 ■ Mac OS X editing tools 113 Version control 117 ■ Static code analysis tools 121 4.3 Compilers and build tools 122 4.4 Mac OS X Aqua-based development tools 122 UNIX-based editors 122 ■ Mac OS X-based editors 127 4.5 Apple’s GUI-based development tools 127 Apple Help Indexing Tool 128 ■ AppleScript Studio 128 FileMerge 129 ■ Icon Composer 132 Interface Builder 132 ■ JavaBrowser 133 MRJAppBuilder 134 ■ MallocDebug 135 ■ ObjectAlloc 143 PEF Viewer 143 ■ PackageMaker 144 ■ Pixie 144 Project Builder 144 ■ PropertyListEditor 144 Quartz Debug 146 ■ Sampler 147 ■ Thread Viewer 150 icns Browser 155 4.6 Apple’s command-line development tools 156 ps (process status) and top (system usage statistics) 156 sc_usage: showing system call usage statistics 158 fs_usage: reporting system calls and page faults related to the filesystem in real-time 160 ■ gprof: displaying execution profile data 161 ■ leaks: searching a process’s memory for unreferenced malloc buffers 163 ■ heap: listing all the malloc-allocated buffers in the process’s heap 165 malloc_history: showing malloc allocations that a process has performed 165 ■ sample: profiling a process during a time interval 166 4.7 Summary 167 [...]... is a Macintosh; you can run native Mac OS X as well as older Macintosh application Figure 1.1 shows an OS X machine running a variety of Mac OS X, UNIX, and older Macintosh software Another interesting feature is the renewed viability of the Macintosh platform within the scientific, engineering, and research communities Many people in these areas have had a bias toward using a Macintosh, but because... registered trademark of The Open Group: http://www.opengroup.org xv xvi PREFACE On one hand, Mac OS X functions as a Macintosh system with an updated user interface, which Apple calls Aqua; you can run your favorite Macintosh applications as well as new programs written specifically for Mac OS X On the other hand, Mac OS X is a fully functioning UNIX system that you can use from the command line and that supports... limitations of the Mac OS, have moved to other platforms to run simulations and conduct research You can now run simulations and develop computationally 6 CHAPTER 1 Welcome to Mac OS X Figure 1.1 software An example of Mac OS X running UNIX (text and X Window based), Mac OS X, and Mac Classic intensive software on the platform; in many cases, you only need to recompile the source code for the UNIX- based... the OS or some abstract command set Mac OS X exists as an integrated system, where Macintosh PREFACE xvii and UNIX each benefit from the other Macintosh users still have their easy-to-use computer, but they get the performance and stability enhancements of UNIX UNIX users keep all the power and possibilities of UNIX, but now have a consistent and easy-to-use interface, a host of new software, and application... two chapters explain how to use and navigate Mac OS X, and introduce you to technologies you will use throughout the book 1 Welcome to Mac OS X s Origins of Mac OS X s Macintosh user interface s Mac OS user interface s Mac OS X UNIX underpinnings s Mac OS X system architecture 3 4 CHAPTER 1 Welcome to Mac OS X You’re never too old to become younger —Mae West The Macintosh burst onto the personal computing... under Mac OS X at a favorite price point (i.e., free), it also shows Macintosh developers how to adapt to this new environment and make the most of the new tools now available to them This book is a clear roadmap for learning to write software under Mac OS X As a longtime Macintosh developer (with a little UNIX experience), I can say xiii xiv FOREWORD this with confidence I got the chance to read this... Macintosh services and functionality to Mac OS X If you like, you can download the Darwin kernel and use it as a stand-alone UNIX system on either Macintosh or Intel hardware (Only Darwin, the UNIX portion of the system, can be run on Intel hardware; for the Macintosh-specific components, such as the Aqua user interface, you still need a full Mac OS X installation.) When most Macintosh users look at the system,... guidelines have grown as new technologies and interface components have been added to the Macintosh system Today, the Aqua Human Interface Guidelines (http://developer.apple.com/techpubs/macosx/Essentials/AquaHIGuidelines) describe how to construct user interfaces for Mac OS X applications To a degree, 8 CHAPTER 1 Welcome to Mac OS X the Aqua guidelines are another extension of the original interface guidelines,... traditional Mac OS with the rock-solid reliability of UNIX At the core of the system is Darwin, an open source UNIX- based operating system built on Mach 3.0 and 4.4BSD; it supplies the UNIX underpinnings for Mac OS X On top of Darwin, Apple engineers layered various Macintosh services that give the system its Macintosh character and functionality On top of all this sits a brand new user interface, called Aqua... OS X system architecture and provides information about specific OS components and how they fit together s Chapter 2 discusses navigating the Mac OS X system and user interface, and shows how many UNIX operations, commands, and concepts work under Mac OS X It also introduces AppleScript, Mac OS X s native scripting language, and covers installing and running an X Window server Part 2, “Tools,” also . Programming Mac OS X : A GUIDE FOR UNIX DEVELOPERS KEVIN O’MALLEY MANNING Programming Mac OS X Programming Mac OS X A GUIDE FOR UNIX DEVELOPERS KEVIN O’MALLEY MANNING Greenwich (74°. with an updated user interface, which Apple calls Aqua; you can run your favorite Macintosh applica- tions as well as new programs written specifically for Mac OS X. On the other hand, Mac OS X. the Mac OS X landscape. It speaks both your language and the language of the natives, helping you quickly make the transition to Mac OS X development. While the transition from UNIX to Mac OS