Apple’s version of this development en-vironment was called Cocoa.With built-in support for the Objective-C language, cou-pled with development tools such as Project Builder or its succe
Trang 1Programming in Objective-C 2.0
Stephen G Kochan
Upper Saddle River, NJ •Boston•Indianapolis•San FranciscoNew York •Toronto •Montreal•London•Munich•Paris •MadridCape Town Sydney Tokyo Singapore Mexico City
Trang 2Programming in Objective-C 2.0
Copyright © 2009 by Pearson Education, Inc.
All rights reserved No part of this book shall be reproduced, stored in a retrieval system, or
transmitted by any means, electronic, mechanical, photocopying, recording, or otherwise,
without written permission from the publisher No patent liability is assumed with respect to
the use of the information contained herein Although every precaution has been taken in
the preparation of this book, the publisher and author assume no responsibility for errors or
omissions Nor is any liability assumed for damages resulting from the use of the
informa-tion contained herein.
1 Objective-C (Computer program language) 2 Object-oriented
programming (Computer science) 3 Macintosh (Computer) Programming.
I Title
QA76.73.O115K63 2009
005.1'17 dc22
2008049771
Printed in the United States of America
First Printing December 2008
Trademarks
All terms mentioned in this book that are known to be trademarks or service marks have
been appropriately capitalized Sams Publishing cannot attest to the accuracy of this
infor-mation Use of a term in this book should not be regarded as affecting the validity of any
trademark or service mark.
Warning and Disclaimer
Every effort has been made to make this book as complete and as accurate as possible,
but no warranty or fitness is implied The information provided is on an “as is” basis The
author and the publisher shall have neither liability nor responsibility to any person or entity
with respect to any loss or damages arising from the information contained in this book.
Bulk Sales
Pearson offers excellent discounts on this book when ordered in quantity for bulk
purchases or special sales For more information, please contact
U.S Corporate and Government Sales 1-800-382-3419
corpsales@pearsontechgroup.com For sales outside of the U.S., please contact
International Sales international@pearsoned.com
Acquisitions Editor
Mark Taber
Development Editor
Indexer
Ken Johnson
Proofreader
Arle Writing and Editing
Technical Editor
Michael Trent
Publishing Coordinator
Trang 3Copyright 1
Developer’s Library 4
About the Author 5
About the Technical Reviewers 5
We Want to Hear from You! 6
Reader Services 6
Chapter 1 Introduction 8
What You Will Learn from This Book 9
How This Book Is Organized 10
Acknowledgments 12
Part I: The Objective-C 2.0 Language 14
Chapter 2 Programming in Objective-C 16
Compiling and Running Programs 16
Explanation of Your First Program 25
Displaying the Values of Variables 29
Summary 32
Exercises 32
Chapter 3 Classes, Objects, and Methods 34
What Is an Object, Anyway? 34
Instances and Methods 35
An Objective-C Class for Working with Fractions 37
The @interface Section 40
The @implementation Section 44
The program Section 45
Accessing Instance Variables and Data Encapsulation 51
Summary 54
Exercises 54
Chapter 4 Data Types and Expressions 56
Data Types and Constants 56
Arithmetic Expressions 63
Assignment Operators 71
A Calculator Class 72
Bit Operators 74
Types: _Bool, _Complex, and _Imaginary 80
Exercises 80
Chapter 5 Program Looping 84
The for Statement 85
The while Statement 96
The do Statement 101
The break Statement 102
The continue Statement 103
Summary 103
Exercises 103
Chapter 6 Making Decisions 106
The if Statement 106
The switch Statement 127
Boolean Variables 130
The Conditional Operator 135
Exercises 136
Chapter 7 More on Classes 140
Separate Interface and Implementation Files 140
Synthesized Accessor Methods 146
Accessing Properties Using the Dot Operator 147
Multiple Arguments to Methods 148
Trang 4Exercises 163
Chapter 8 Inheritance 164
It All Begins at the Root 164
Extension Through Inheritance: Adding New Methods 169
Overriding Methods 182
Extension Through Inheritance: Adding New Instance Variables 188
Abstract Classes 190
Exercises 191
Chapter 9 Polymorphism, Dynamic Typing, and Dynamic Binding 194
Polymorphism: Same Name, Different Class 194
Dynamic Binding and the id Type 198
Compile Time Versus Runtime Checking 200
The id Data Type and Static Typing 201
Asking Questions About Classes 202
Exception Handling Using @try 207
Exercises 210
Chapter 10 More on Variables and Data Types 212
Initializing Classes 212
Scope Revisited 214
Storage Class Specifiers 220
Enumerated Data Types 222
The typedef Statement 225
Data Type Conversions 227
Exercises 229
Chapter 11 Categories and Protocols 232
Categories 232
Protocols 238
Composite Objects 242
Exercises 243
Chapter 12 The Preprocessor 246
The #define Statement 246
The #import Statement 254
Conditional Compilation 257
Exercises 260
Chapter 13 Underlying C Language Features 262
Arrays 263
Functions 269
Structures 278
Pointers 290
Unions 309
They’re Not Objects! 312
Miscellaneous Language Features 312
How Things Work 317
Exercises 319
Part II: The Foundation Framework 322
Chapter 14 Introduction to the Foundation Framework 324
Foundation Documentation 324
Chapter 15 Numbers, Strings, and Collections 328
Number Objects 329
String Objects 333
Array Objects 348
Synthesized AddressCard Methods 356
Dictionary Objects 374
Set Objects 377
Exercises 382
Chapter 16 Working with Files 384
Managing Files and Directories: NSFileManager 385
Trang 5Chapter 17 Memory Management 412
The Autorelease Pool 412
Reference Counting 413
An Autorelease Example 425
Summary of Memory-Management Rules 426
Garbage Collection 427
Exercises 429
Chapter 18 Copying Objects 430
The copy and mutableCopy Methods 431
Shallow Versus Deep Copying 433
Implementing the <NSCopying> Protocol 436
Copying Objects in Setter and Getter Methods 439
Exercises 441
Chapter 19 Archiving 442
Archiving with XML Property Lists 442
Archiving with NSKeyedArchiver 444
Writing Encoding and Decoding Methods 447
Using NSData to Create Custom Archives 454
Using the Archiver to Copy Objects 457
Exercises 459
Part III: Cocoa and the iPhone SDK 460
Chapter 20 Introduction to Cocoa 462
Framework Layers 462
Cocoa Touch 463
Chapter 21 Writing iPhone Applications 466
The iPhone SDK 466
Your First iPhone Application 466
An iPhone Fraction Calculator 483
Summary 498
Exercises 499
Part IV: Appendixes 502
Glossary 504
Appendix B Objective-C 2.0 Language Summary 512
Digraphs and Identifiers 512
Comments 516
Constants 517
Data Types and Declarations 520
Expressions 531
Storage Classes and Scope 546
Functions 550
Classes 553
Statements 563
Exception Handling 568
Preprocessor 568
Appendix C Address Book Source Code 576
AddressCard Interface File 576
AddressBook Interface File 577
AddressCard Implementation File 577
AddressBook Implementation File 579
Appendix D Resources 582
Answers to Exercises, Errata, and Such 582
Objective-C Language 582
C Programming Language 583
Cocoa 583
iPhone and iTouch Application Development 584
Trang 6To Roy and Ve, two people whom I dearly miss
❖
Trang 7Developer’s Library
ESSENTIAL REFERENCES FOR PROGRAMMING PROFESSIONALS
Developer’s Library books are designed to provide practicing programmers with
unique, high-quality references and tutorials on the programming languages andtechnologies they use in their daily work
All books in the Developer’s Library are written by expert technology practitioners
who are especially skilled at organizing and presenting information in a way that’suseful for other programmers
Key titles include some of the best, most widely acclaimed books within their topic areas:
PHP & MySQL Web Development
Luke Welling & Laura ThomsonISBN 978-0-672-32916-6
MySQL
Paul DuBoisISBN-13: 978-0-672-32938-8
Linux Kernel Development
Robert LoveISBN-13: 978-0-672-32946-3
Python Essential Reference
David BeazleyISBN-13: 978-0-672-32862-6
Programming in Objective-C
Stephen G KochanISBN-13: 978-0-321-56615-7
PostgreSQL
Korry DouglasISBN-13: 978-0-672-33015-5
Developer’s Library books are available at most retail and online bookstores, as well
as by subscription from Safari Books Online at safari.informit.comDeveloper’s Library
Trang 8About the Author
Stephen Kochanis the author and coauthor of several bestselling titles on the C
lan-guage, including Programming in C (Sams, 2004), Programming in ANSI C (Sams, 1994), and Topics in C Programming (Wiley, 1991), and several Unix titles, including Exploring the
Unix System (Sams, 1992) and Unix Shell Programming (Sams 2003) He has been
pro-gramming on Macintosh computers since the introduction of the first Mac in 1984, and
he wrote Programming C for the Mac as part of the Apple Press Library In 2003 Kochan wrote Programming in Objective-C (Sams, 2003), and followed that with another Mac- related title, Beginning AppleScript (Wiley, 2004).
About the Technical Reviewers
Michael Trenthas been programming in Objective-C since 1997—and programmingMacs since well before that He is a regular contributor to Steven Frank’s
www.cocoadev.com Web site, a technical reviewer for numerous books and magazinearticles, and an occasional dabbler in Mac OS X open source projects Currently, he isusing Objective-C and Apple Computer’s Cocoa frameworks to build professional videoapplications for Mac OS X Michael holds a Bachelor of Science degree in computerscience and a Bachelor of Arts degree in music from Beloit College of Beloit,Wisconsin
He lives in Santa Clara, California, with his lovely wife, Angela
Trang 9We Want to Hear from You!
As the reader of this book, you are our most important critic and commentator.We value
your opinion and want to know what we’re doing right, what we could do better, whatareas you’d like to see us publish in, and any other words of wisdom you’re willing topass our way
You can email or write me directly to let me know what you did or didn’t like aboutthis book—as well as what we can do to make our books stronger
Please note that I cannot help you with technical problems related to the topic of this book, and that due to the high volume of mail I receive, I might not be able to reply to every message.
When you write, please be sure to include this book’s title and author, as well as yourname and phone or email address I will carefully review your comments and share themwith the author and editors who worked on the book
E-mail: feedback@developers-library.infoMail: Mark Taub
Associate PublisherSams Publishing
800 East 96th StreetIndianapolis, IN 46240 USA
Reader Services
Visit our website and register this book at www.informit.com/title/9780321566157 forconvenient access to any updates, downloads, or errata that might be available for thisbook
Trang 11Introduction
Dennis Ritchie at AT&T Bell Laboratories pioneered the C programming language inthe early 1970s However, this programming language did not begin to gain widespreadpopularity and support until the late 1970s.This was because, until that time, C compilerswere not readily available for commercial use outside of Bell Laboratories Initially, thisgrowth in popularity was also partly spurred by the equal, if not faster, growth in popular-ity of the UNIX operating system, which was written almost entirely in C
Brad J Cox designed the Objective-C language in the early 1980s.The language was
based on a language called SmallTalk-80 Objective-C was layered on top of the C
lan-guage, meaning that extensions were added to C to create a new programming language
that enabled objects to be created and manipulated.
NeXT Software licensed the Objective-C language in 1988 and developed its librariesand a development environment called NEXTSTEP In 1992, Objective-C support wasadded to the Free Software Foundation’s GNU development environment.This software
is in the public domain, which means that anyone who wants to learn how to program inObjective-C can do so by downloading its tools at no charge
In 1994, NeXT Computer and Sun Microsystems released a standardized specification
of the NEXTSTEP system, called OPENSTEP.The Free Software Foundation’s mentation of OPENSTEP is called GNUStep A Linux version, which also includes theLinux kernel and the GNUStep development environment, is called, appropriatelyenough, LinuxSTEP
imple-On December 20, 1996, Apple Computer announced that it was acquiring NeXTSoftware, and the NEXTSTEP/OPENSTEP environment became the basis for the nextmajor release of Apple’s operating system, OS X Apple’s version of this development en-vironment was called Cocoa.With built-in support for the Objective-C language, cou-pled with development tools such as Project Builder (or its successor Xcode) andInterface Builder, Apple created a powerful development environment for application de-velopment on Mac OS X
In 2007, Apple released an update to the Objective-C language and labeled it Objective-C 2.0.That version of the language is covered in this second edition of thebook
Trang 122 Chapter 1 Introduction
When the iPhone was released in 2007, developers clamored for the opportunity todevelop applications for this revolutionary device At first, Apple did not welcome third-party application development.The company’s way of placating wannabe iPhone devel-opers was to allow them to develop web-based applications A web-based application runsunder the iPhone’s built-in Safari web browser and requires the user to connect to thewebsite that hosts the application in order to run it Developers were not satisfied withthe many inherent limitations of web-based applications, and Apple shortly thereafter an-
nounced that developers would be able to develop so-called native applications for the
iPhone
A native application is one that resides on the iPhone and runs under the iPhone’s erating system, in the same way that the iPhone’s built-in applications (such as Contacts,iPod, and Weather) run on the device.The iPhone’s OS is actually a version of Mac OS
op-X, which meant that applications could be developed and debugged on a MacBook Pro,for example In fact, Apple soon provided a powerful Software Development Kit (SDK)that allowed for rapid iPhone application development and debugging.The availability of
an iPhone simulator made it possible for developers to debug their applications directly
on their development system, obviating the need to download and test the program on anactual iPhone or iPod Touch device
What You Will Learn from This Book
When I contemplated writing a tutorial on Objective-C, I had to make a fundamentaldecision As with other texts on Objective-C, I could write mine to assume that thereader already knew how to write C programs I could also teach the language from theperspective of using the rich library of routines, such as the Foundation and ApplicationKit frameworks Some texts also take the approach of teaching how to use the develop-ment tools, such as the Mac’s Xcode and Interface Builder
I had several problems adopting this approach First, learning the entire C language
be-fore learning Objective-C is wrong C is a procedural language containing many features
that are not necessary for programming in Objective-C, especially at the novice level Infact, resorting to some of these features goes against the grain of adhering to a good ob-ject-oriented programming methodology It’s also not a good idea to learn all the details
of a procedural language before learning an object-oriented one.This starts the mer in the wrong direction, and gives the wrong orientation and mindset for fostering agood object-oriented programming style Just because Objective-C is an extension to the
program-C language doesn’t mean you have to learn program-C first
So I decided neither to teach C first nor to assume prior knowledge of the language
Instead, I decided to take the unconventional approach of teaching Objective-C and theunderlying C language as a single integrated language, from an object-oriented program-ming perspective.The purpose of this book is as its name implies: to teach you how toprogram in Objective-C 2.0 It does not profess to teach you in detail how to use the de-velopment tools that are available for entering and debugging programs, or to provide in-
Trang 13How This Book Is Organized
depth instructions on how to develop interactive graphical applications with Cocoa.Youcan learn all that material in greater detail elsewhere, after you’ve learned how to writeprograms in Objective-C In fact, mastering that material will be much easier when youhave a solid foundation of how to program in Objective-C.This book does not assumemuch, if any, previous programming experience In fact, if you’re a novice programmer,you should be able to learn Objective-C as your first programming language
This book teaches Objective-C by example As I present each new feature of the guage, I usually provide a small complete program example to illustrate the feature Just as
lan-a picture is worth lan-a thouslan-and words, so is lan-a properly chosen progrlan-am exlan-ample.You lan-arestrongly encouraged to run each program (all of which are available online) and comparethe results obtained on your system to those shown in the text By doing so, you willlearn the language and its syntax, but you will also become familiar with the process ofcompiling and running Objective-C programs
How This Book Is Organized
This book is divided into three logical parts Part I,“The Objective-C 2.0 Language,”
teaches the essentials of the language Part II,“The Foundation Framework,” teaches how
to use the rich assortment of predefined classes that form the Foundation framework PartIII,“Cocoa Programming and the iPhone SDK,” gives you an overview of Cocoa’s Appli-cation Kit framework and then walks you through the process of developing a simpleiPhone application using the UIKit framework, and developing and debugging the codewith Xcode and Interface Builder
A framework is a set of classes and routines that have been logically grouped together to
make developing programs easier Much of the power of programming in Objective-Crests on the extensive frameworks that are available
Chapter 2,“Programming in Objective-C,” begins by teaching you how to write yourfirst program in Objective-C
Because this is not a book on Cocoa programming, graphical user interfaces (GUIs)are not extensively taught and are hardly even mentioned until Part III So an approachwas needed to get input into a program and produce output Most of the examples in thistext take input from the keyboard and produce their output in a window: a Terminalwindow if you’re using gccfrom the command line, or a Console window if you’re usingXcode
Chapter 3,“Classes, Objects, and Methods,” covers the fundamentals of ented programming.This chapter introduces some terminology, but it’s kept to a mini-mum I also introduce the mechanism for defining a class and the means for sendingmessages to instances or objects Instructors and seasoned Objective-C programmers will
object-ori-notice that I use static typing for declaring objects I think this is the best way for the
stu-dent to get started because the compiler can catch more errors, making the programsmore self-documenting and encouraging the new programmer to explicitly declare thedata types when they are known.As a result, the notion of the idtype and its power is notfully explored until Chapter 9,“Polymorphism, Dynamic Typing, and Dynamic Binding.”
Trang 14Making decisions is fundamental to any computer programming language Chapter 6,
“Making Decisions,” covers the Objective-C language’sifandswitchstatements in detail.Chapter 7,“More on Classes,” delves more deeply into working with classes and ob-jects Details about methods, multiple arguments to methods, and local variables are dis-cussed here
Chapter 8,“Inheritance,” introduces the key concept of inheritance.This feature makesthe development of programs easier because you can take advantage of what comes fromabove Inheritance and the notion of subclasses make modifying and extending existingclass definitions easy
Chapter 9 discusses three fundamental characteristics of the Objective-C language
Polymorphism, dynamic typing, and dynamic binding are the key concepts covered here
Chapters 10–13 round out the discussion of the Objective-C language, covering issuessuch as initialization of objects, protocols, categories, the preprocessor, and some of theunderlying C features, including functions, arrays, structures, and pointers.These underly-ing features are often unnecessary (and often best avoided) when first developing object-oriented applications It’s recommended that you skim Chapter 13,“Underlying CFeatures,” the first time through the text and return to it only as necessary to learn moreabout a particular feature of the language
Part II begins with Chapter 14,“Introduction to the Foundation Framework,” whichgives an introduction to the Foundation framework and how to access its documentation.Chapters 15–19 cover important features of the Foundation framework.These includenumber and string objects, collections, the file system, memory management, and theprocess of copying and archiving objects
By the time you’re done with Part II, you will be able to develop fairly sophisticatedprograms in Objective-C that work with the Foundation framework
Part III starts with Chapter 20,“Introduction to Cocoa.” Here you’ll get a quickoverview of the Application Kit that provides the classes you need to develop sophisti-cated graphical applications on the Mac
Chapter 21,“Writing iPhone Applications,” introduces the iPhone SDK and the UIKitframework.This chapter illustrates a step-by-step approach to writing a simple iPhone (oriTouch) application, followed by a calculator application that enables you to use youriPhone to perform simple arithmetic calculations with fractions
Because object-oriented parlance involves a fair amount of terminology, Appendix A,
“Glossary,” provides definitions of some common terms
Appendix B,“Objective-C Language Summary,” gives a summary of the Objective-Clanguage, for your quick reference
Appendix C,“Address Book Source Code,” gives the source code listing for two classesthat are developed and used extensively in Part II of this text.These classes define address
Trang 15Acknowledgments
card and address book classes Methods enable you to perform simple operations such asadding and removing address cards from the address book, looking up someone, listingthe contents of the address book, and so on
After you’ve learned how to write Objective-C programs, you can go in several tions.You might want to lean more about the underlying C programming language—oryou might want to start writing Cocoa programs to run on Mac OS X, or develop moresophisticated iPhone applications In any case, Appendix D,“Resources,” will guide you inthe right direction
direc-Acknowledgments
I would like to acknowledge several people for their help in the preparation of the firstedition of this text First, I want to thank Tony Iannino and Steven Levy for reviewing themanuscript I am also grateful to Mike Gaines for providing his input
I’d also like to thank my technical editors, Jack Purdum (first edition) and Mike Trent
I was lucky enough to have Mike review both editions of this text He provided the mostthorough review of any book I’ve ever written Not only did he point out weaknesses,but he was also generous enough to offer his suggestions Because of Mike’s comments inthe first edition, I changed my approach to teaching memory management and tried tomake sure that every program example in this book was “leak free.” Mike also providedinvaluable input for my chapter on iPhone programming
From the first edition, Catherine Babin supplied the cover photograph and provided
me with many wonderful pictures to choose from Having the cover art from a friendmade the book even more special
I am so grateful to Mark Taber from Pearson for putting up with all delays and for ing kind enough to work around my schedule and to tolerate my consistent missing ofdeadlines while working on this second edition From Pearson I’d also like to thank mydevelopment editor, Michael Thurston, my copy editor, Krista Hansing, and my projecteditor, Mandie Frank, who expertly managed the mad dash to the finish line
be-As always, my children showed an incredible amount of maturity and patience while Ipulled this book together over the summer (and then into the fall)! To Gregory, Linda,and Julia, I love you!
Stephen G KochanOctober 2008
Trang 173 Classes, Objects, and Methods
4 Data Types and Expressions
10 More on Variables and Data Types
11 Categories and Protocols
12 The Preprocessor
13 Underlying C Language Features
Trang 19
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@ ”Programming is fun!”);
[pool drain];
return 0;
}
Compiling and Running Programs
Before we go into a detailed explanation of this program, we need to cover the steps volved in compiling and running it.You can both compile and run your program usingXcode, or you can use the GNU Objective-C compiler in a Terminal window Let’s gothrough the sequence of steps using both methods.Then you can decide how you want
in-to work with your programs throughout the rest of this book
Trang 20
10 Chapter 2 Programming in Objective-C
we return to Xcode and take you through the steps involved in developing a graphical plication with it
ap-First, Xcode is located in the Developerfolder inside a subfolder called Applications.Figure 2.1 shows its icon
Start Xcode Under the File menu, select New Project (see Figure 2.2)
A window appears, as shown in Figure 2.3
Figure 2.1 Xcode Icon
Figure 2.2 Starting a new project
Trang 21
Compiling and Running Programs
Scroll down the left pane until you get to Command Line Utility In the upper-rightpane, highlight Foundation Tool.Your window should now appear as shown in Figure 2.4
Click Choose.This brings up a new window, shown in Figure 2.5
Figure 2.3 Starting a new project: selecting the application type
Figure 2.4 Starting a new project: creating a Foundation tool
Trang 22
12 Chapter 2 Programming in Objective-C
We’ll call the first program prog1, so type that into the Save As field.You may want tocreate a separate folder to store all your projects in On my system, I keep the projects forthis book in a folder called ObjC Progs
Click the Save button to create your new project.This gives you a project windowsuch as the one shown in Figure 2.6 Note that your window might display differently ifyou’ve used Xcode before or have changed any of its options
Now it’s time to type in your first program Select the file prog1.min the upper-rightpane.Your Xcode window should now appear as shown in Figure 2.7
Objective-C source files use .mas the last two characters of the filename (known as its
extension).Table 2.1 lists other commonly used filename extensions.
Figure 2.5 Xcode file list window
Table 2.1 Common Filename Extensions
.o Object (compiled) file
Trang 23
Compiling and Running Programs
Figure 2.6 Xcode prog1 project window
Figure 2.7 File prog1.m and edit window
Trang 24
14 Chapter 2 Programming in Objective-C
Returning to your Xcode project window, the bottom-right side of the window showsthe file called prog1.mand contains the following lines:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// insert code here
NSLog (@ ”Hello World!”);
bottom-You can edit your file inside this window Xcode has created a template file for you touse
Make changes to the program shown in the Edit window to match Program 2.1.Theline you add at the beginning of prog1.mthat starts with two slash characters (//) is called
a comment; we talk more about comments shortly.
Your program in the edit window should now look like this:
// First program example
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@ ”Programming is fun!”);
Now it’s time to compile and run your first program—in Xcode terminology, it’s called
build and run.You need to save your program first, however, by selecting Save from the File
menu If you try to compile and run your program without first saving your file, Xcodeasks whether you want to save it
Trang 25
Compiling and Running Programs
Under the Build menu, you can select either Build or Build and Run Select the latterbecause that automatically runs the program if it builds without any errors.You can alsoclick the Build and Go icon that appears in the toolbar
Note
Build and Go means “Build and then do the last thing I asked you to do,” which might be Run, Debug, Run with Shark or Instruments, and so on The first time you use this for a proj- ect, Build and Go means to build and run the program, so you should be fine using this op- tion However, just be aware of the distinction between “Build and Go” and “Build and Run.”
If you made mistakes in your program, you’ll see error messages listed during this step
In this case, go back, fix the errors, and repeat the process After all the errors have beenremoved from the program, a new window appears, labeled prog1 – Debugger Console.This window contains the output from your program and should look similar to Figure2.8 If this window doesn’t automatically appear, go to the main menu bar and select Con-sole from the Run menu.We discuss the actual contents of the Console window shortly
You’re now done with the procedural part of compiling and running your first gram with Xcode (whew!).The following summarizes the steps involved in creating anew program with Xcode:
pro-1. Start the Xcode application
2. If this is a new project, select File, New Project
3. For the type of application, select Command Line Utility, Foundation Tool, andclick Choose
Figure 2.8 Xcode Debugger Console window
Trang 26
16 Chapter 2 Programming in Objective-C
4. Select a name for your project, and optionally a directory to store your project files
in Click Save
5. In the top-right pane, you will see the file prog1.m(or whatever name you assigned
to your project, followed by .m Highlight that file.Type your program into the editwindow that appears directly below that pane
6. Save the changes you’ve entered by selecting File, Save
7. Build and run your application by selecting Build, Build and Run, or by clickingthe Build and Go Button
8. If you get any compiler errors or the output is not what you expected, make yourchanges to the program and repeat steps 6 and 7
Using Terminal
Some people might want to avoid having to learn Xcode to get started programmingwith Objective-C If you’re used to using the UNIX shell and command-line tools, youmight want to edit, compile, and run your programs using the Terminal application Here
we examine how to go about doing that
The first step is to start the Terminal application on your Mac.The Terminal application
is located in the Applicationsfolder, stored under Utilities Figure 2.9 shows its icon
Start the Terminal application.You’ll see a window that looks like Figure 2.10
You type commands after the $(or%, depending on how your Terminal application isconfigured) on each line If you’re familiar with using UNIX, you’ll find this
straightforward
First, you need to enter the lines from Program 2.1 into a file.You can begin by ing a directory in which to store your program examples.Then you must run a text edi-tor, such as vi or emacs, to enter your program:
creat-sh-2.05a$ mkdir Progs Create a directory to store programs in
sh-2.05a$ cd Progs Change to the new directory
sh-2.05a$ vi prog1.m Start up a text editor to enter program
Figure 2.9 Terminal program icon
Trang 27
Compiling and Running Programs
Figure 2.10 Terminal window
gcc –framework Foundation files -o progname
This option says to use information about the Foundation framework:
-framework Foundation
Just remember to use this option on your command line.filesis the list of files to becompiled In our example, we have only one such file, and we’re calling it prog1.m.prognameis the name of the file that will contain the executable if the program compileswithout any errors
We’ll call the program prog1; here, then, is the command line to compile your firstObjective-C program:
$ gcc –framework Foundation prog1.m -o prog1 Compile prog1.m & call it prog1
$
The return of the command prompt without any messages means that no errors werefound in the program Now you can subsequently execute the program by typing thenameprog1at the command prompt:
$ prog1 Execute prog1
Trang 28
18 Chapter 2 Programming in Objective-C
sh: prog1: command not found
$
This is the result you’ll probably get unless you’ve used Terminal before.The UNIXshell (which is the application running your program) doesn’t know where prog1is lo-cated (we don’t go into all the details of this here), so you have two options: One is toprecede the name of the program with the characters ./so that the shell knows to look inthe current directory for the program to execute.The other is to add the directory inwhich your programs are stored (or just simply the current directory) to the shell’s PATH
variable Let’s take the first approach here:
$ /prog1 Execute prog1 2008-06-08 18:48:44.210 prog1[7985:10b] Programming is fun!
$
You should note that writing and debugging Objective-C programs from the terminal
is a valid approach However, it’s not a good long-term strategy If you want to build Mac
OS X or iPhone applications, there’s more to just the executable file that needs to be
“packaged” into an application bundle It’s not easy to do that from the Terminal tion, and it’s one of Xcode’s specialties.Therefore, I suggest you start learning to useXcode to develop your programs.There is a learning curve to do this, but the effort will
applica-be well worth it in the end
Explanation of Your First Program
Now that you are familiar with the steps involved in compiling and running Objective-Cprograms, let’s take a closer look at this first program Here it is again:
// First program example
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@ ”Programming is fun!”);
The first line of the program introduces the concept of the comment:
// First program example
Trang 29
Explanation of Your First Program
A comment statement is used in a program to document a program and enhance itsreadability Comments tell the reader of the program—whether it’s the programmer orsomeone else whose responsibility it is to maintain the program—just what the program-mer had in mind when writing a particular program or a particular sequence of statements
You can insert comments into an Objective-C program in two ways One is by usingtwo consecutive slash characters (//).The compiler ignores any characters that followthese slashes, up to the end of the line
You can also initiate a comment with the two characters /and*.This marks the ginning of the comment.These types of comments have to be terminated.To end thecomment, you use the characters *and/, again without any embedded spaces All charac-ters included between the opening /*and the closing */are treated as part of the com-ment statement and are ignored by the Objective-C compiler.This form of comment isoften used when comments span many lines of code, as in the following:
be-/*
This file implements a class called Fraction, which represents fractional numbers Methods allow manipulation of fractions, such as addition, subtraction, etc.
For more information, consult the document:
to insert comments Inserting comments while developing the program makes this times tedious task a bit easier to handle
some-This next line of Program 2.1 tells the compiler to locate and process a file named
Foundation.h:
#import <Foundation/Foundation.h>
This is a system file—that is, not a file that you created.#importsays to import or clude the information from that file into the program, exactly as if the contents of the filewere typed into the program at that point.You imported the file Foundation.hbecause ithas information about other classes and functions that are used later in the program