1. Trang chủ
  2. » Công Nghệ Thông Tin

Programming in Objective-C 2.0 edition phần 1 ppt

59 471 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Programming in Objective-C 2.0
Tác giả Stephen G. Kochan
Trường học Pearson Education
Chuyên ngành Computer Programming
Thể loại Sách giáo trình
Năm xuất bản 2009
Thành phố Upper Saddle River
Định dạng
Số trang 59
Dung lượng 1,44 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

Programming 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 2

Programming 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 3

Copyright 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 4

Exercises 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 5

Chapter 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 6

To Roy and Ve, two people whom I dearly miss

Trang 7

Developer’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 8

About 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 9

We 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 11

Introduction

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 12

2 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 13

How 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 14

Making 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 15

Acknowledgments

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 17

3 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

Ngày đăng: 12/08/2014, 23:22

TỪ KHÓA LIÊN QUAN