
本书是为在苹果iOS和OSX平台上,使用Objective-C语言和面向对象程序设计模式进行专业开发而编写的简洁、细致的入门读物。本书假设读者无面向对象程序语言或C语言编程经验,以保障初学者与有经验的程序员一样,可用本书迅速和有效地学习Objective-C。本书提供的学习方法独特,配有众多程序示例及章末练习,适合自学和课堂教学。第6版已全面更新,充分纳入Objective-C的新功能与技术,同时覆盖对新版Xcode、iOS和MacOSXMavericks的介绍。
献给我深深思念的Roy和Ve。献给Ken Brown,“It`s just a jump to the left”。
目录 1 Introduction What You Will Learn from This Book How This Book Is Organized Support Acknowledgments Preface to the Sixth Edition I: The Objective-C Language 2 Programming in Objective-C Compiling and Running Programs Using Xcode Using Terminal Explanation of Your First Program Displaying the Values of Variables Summary Exercises 3 Classes, Objects, and Methods What Is an Object, Anyway? Instances and Methods An Objective-C Class for Working with Fractions The @interface Section Choosing Names Class and Instance Methods The @implementation Section The program Section Accessing Instance Variables and Data Encapsulation Summary Exercises 4 Data Types and Expressions Data Types and Constants Type int Type float Type char Qualifiers: long, long long, short, unsigned, and signed Type id Arithmetic Expressions Operator Precedence Integer Arithmetic and the Unary Minus Operator The Modulus Operator Integer and Floating-Point Conversions The Type Cast Operator Assignment Operators A Calculator Class Exercises 5 Program Looping The for Statement Keyboard Input Nested for Loops for Loop Variants The while Statement The do Statement The break Statement The continue Statement Summary Exercises 6 Making Decisions The if Statement The if-else Construct Compound Relational Tests Nested if Statements The else if Construct The switch Statement Boolean Variables The Conditional Operator Exercises 7 More on Classes Separate Interface and Implementation Files Synthesized Accessor Methods Accessing Properties Using the Dot Operator Multiple Arguments to Methods Methods without Argument Names Operations on Fractions Local Variables Method Arguments The static Keyword The self Keyword Allocating and Returning Objects from Methods Extending Class Definitions and the Interface File Exercises 8 Inheritance It All Begins at the Root Finding the Right Method Extension through Inheritance: Adding New Methods A Point Class and Object Allocation The @class Directive Classes Owning Their Objects Overriding Methods Which Method Is Selected? Abstract Classes Exercises 9 Polymorphism, Dynamic Typing, and Dynamic Binding Polymorphism: Same Name, Different Class Dynamic Binding and the id Type Compile Time Versus Runtime Checking The id Data Type and Static Typing Argument and Return Types with Dynamic Typing Asking Questions about Classes Exception Handling Using @try Exercises 10 More on Variables and Data Types Initializing Objects Scope Revisited More on Properties, Synthesized Accessors, and Instance Variables Global Variables Static Variables Enumerated Data Types The typedef Statement Data Type Conversions Conversion Rules Bit Operators The Bitwise AND Operator The Bitwise Inclusive-OR Operator The Bitwise Exclusive-OR Operator The Ones Complement Operator The Left-Shift Operator The Right-Shift Operator Exercises 11 Categories and Protocols Categories Class Extensions Some Notes about Categories Protocols and Delegation Delegation Informal Protocols Composite Objects Exercises 12 The Preprocessor The #define Statement More Advanced Types of Definitions The #import Statement Conditional Compilation The #ifdef , #endif , #else , and #ifndef Statements The #if and #elif Preprocessor Statements The #undef Statement Exercises 13 Underlying C Language Features Arrays Initializing Array Elements Character Arrays Multidimensional Arrays Functions Arguments and Local Variables Returning Function Results Functions, Methods, and Arrays Blocks Structures Initializing Structures Structures within Structures Additional Details about Structures Don’t Forget about Object-Oriented Programming! Pointers Pointers and Structures Pointers, Methods, and Functions Pointers and Arrays Operations on Pointers Pointers and Memory Addresses They’re Not Objects! Miscellaneous Language Features Compound Literals The goto Statement The Null Statement The Comma Operator The sizeof Operator Command-Line Arguments How Things Work Fact 1: Instance Variables Are Stored in Structures Fact 2: An Object Variable Is Really a Pointer Fact 3: Methods Are Functions, and Message Expressions Are Function Calls Fact 4: The id Type Is a Generic Pointer Type Exercises II: The Foundation Framework 14 Introduction to the Foundation Framework Foundation Documentation 15 Numbers, Strings, and Collections Number Objects String Objects More on the NSLog Function The description Method Mutable Versus Immutable Objects Mutable Strings Array Objects Making an Address Book Sorting Arrays Dictionary Objects Enumerating a Dictionary Set Objects NSIndexSet Exercises 16 Working with Files Managing Files and Directories: NSFileManager Working with the NSData Class Working with Directories Enumerating the Contents of a Directory Working with Paths: NSPathUtilities.h Common Methods for Working with Paths Copying Files and Using the NSProcessInfo Class Basic File Operations: NSFileHandle The NSURL Class The NSBundle Class Exercises 17 Memory Management and Automatic Reference Counting Automatic Garbage Collection Manual Reference Counting Object References and the Autorelease Pool The Event Loop and Memory Allocation Summary of Manual Memory Management Rules Automatic Reference Counting Strong Variables Weak Variables @autoreleasepool Blocks Method Names and Non-ARC Compiled Code 18 Copying Objects The copy and mutableCopy Methods Shallow Versus Deep Copying Implementing the <NSCopying> Protocol Copying Objects in Setter and Getter Methods Exercises 19 Archiving Archiving with XML Property Lists Archiving with NSKeyedArchiver Writing Encoding and Decoding Methods Using NSData to Create Custom Archives Using the Archiver to Copy Objects Exercises III: Cocoa, Cocoa Touch, and the iOS SDK 20 Introduction to Cocoa and Cocoa Touch Framework Layers Cocoa Touch 21 Writing iOS Applications The iOS SDK Your First iPhone Application Creating a New iPhone Application Project Entering Your Code Designing the Interface An iPhone Fraction Calculator Starting the New Fraction_Calculator Project Defining the View Controller The Fraction Class A Calculator Class That Deals with Fractions Designing the User Interface Summary Exercises Appendixes A Glossary B Address Book Example Source Code Index
Stephen G. Kochan 是多本畅销书的作者或合著者,其中有关于C语言的,包括Programming in C(Sams,2004)、Programming in ANSI C(Sams,1994)和Topics in C Programming(Wiley,1991),也有关于UNIX的,包括Exploring the UNIX System(Sams,1992)和UNIX Shell Programming(Sams,2003)。从1984年Mac最初引进时,他就开始在Macintosh计算机上编程了,他编写的Programming C for the Mac是Apple Press Library的一部分。2003年,Kochan编写了Programming in Objective-C(Sams,2003),之后编写了另一本与Mac有关的书籍Beginning AppleScript(Wiley,2004)。__eol__技术审校人员简介__eol__Michael Trent 从1997年开始使用Objective-C编程,之前在Mac上编程。他定期为Steven Frank的网站(www.cocoadev.com)供稿,为大量的书籍和杂志文章做过技术审校,偶尔也涉足Mac OS X开源项目。目前,他正在使用Objective-C和苹果计算机的Cocoa框架生成Mac OS X使用的专业视频应用程序。Michael拥有比洛特学院(位于威斯康辛州比洛特)的计算机科学学士学位和音乐艺术学位。他与妻子Angela居住在加利福尼亚州的圣克拉拉。__eol__Wendy Mui 是旧金山湾区的程序员和软件开发经理。她通过Steve G. Kochan的Programming in Objective-C, 2e学习了Objective-C,在Bump Technologies公司找到了一份工作,将她的编程技能用在客户端应用程序和Bump第三方开发者使用的API/SDK上。在从事iOS开发之前,Wendy在位于硅谷和加利福尼亚的Sun公司及其他科技公司工作。她迷上编程是在加州大学伯克利分校获得数学硕士学位的时候。Wendy不工作的时候,就在冲击她的跆拳道黑带四段。__eol__