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

Cocoa Programming Developer’s Handbook phần 4 potx

924 817 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

Định dạng
Số trang 924
Dung lượng 12,51 MB

Nội dung

ptg Cocoa ® Programming Developer’s Handbook From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg This page intentionally left blank From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg Cocoa ® Programming Developer’s Handbook David Chisnall Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg Cocoa® Programming Developer’s Handbook Copyright © 2010 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 information contained herein. ISBN-13: 978-0-321-63963-9 ISBN-10: 0-321-63963-4 Library of Congress Cataloging-in-Publication Data Chisnall, David. Cocoa programming developer’s handbook / David Chisnall. p. cm. Includes index. ISBN 978-0-321-63963-9 (pbk. : alk. paper) 1. Cocoa (Application development environment) 2. Object-oriented programming (Computer science) 3. Application program interfaces (Computer software) 4. Mac OS. I. Title. QA76.64.C485 2010 005.26’8—dc22 2009042661 Printed in the United States on recycled paper at Edwards Brothers in Ann Arbor, Michigan. First Printing December 2009 Trademarks All terms mentioned in this book that are known to be trademarks or service marks have been appropriately capitalized. Pearson cannot attest to the accuracy of this information. 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 us by phone or email: U.S. Corporate and Government Sales 1-800-382-3419 corpsales@pearsontechgroup.com For sales outside of the U.S., please contact the International Sales group: International Sales international@pearson.com Editor-in-Chief Mark L. Taub Managing Editor John Fuller Full-Service Production Manager Julie B. Nahil Technical Reviewer Gregory Casamento Book Designer Gary Adair Composition David Chisnall From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg Contents List of Figures xvii List of Tables xxiii Preface xxv I Introducing Cocoa 1 1 Cocoa and Mac OS X 3 1.1 UnderstandingWhentoUseCocoa 3 1.1.1 Carbon 3 1.1.2 Java 5 1.1.3 Cocoa 5 1.1.4 UNIX APIs 7 1.1.5 OtherChoices 8 1.2 Understanding Cocoa’s Role in Mac OS X . 9 1.2.1 Cocoa 9 1.2.2 Quartz 11 1.2.3 CoreFoundation 13 1.2.4 Darwin 14 1.2.5 XNU 15 1.3 Overview 16 2 Cocoa Language Options 17 2.1 ObjectOrientation 17 2.2 Objective-C 19 2.2.1 Objective-C Compiler Choices . . . 20 2.2.2 DifferencesfromJavaandC++ 22 2.2.3 Objective-C2.0 23 2.3 RubyandPython 24 v From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg vi Contents 2.4 Summary 25 3 Using Apple’s Developer Tools 27 3.1 ObtainingApple’sDeveloperTools 28 3.2 InterfaceBuilder 28 3.2.1 Outlets and Actions 30 3.2.2 CocoaBindings 31 3.2.3 DrawingaSimpleApplication 34 3.3 XCode 37 3.3.1 CreatingaSimpleProject 37 3.3.2 OpenStep Bundles . 39 3.3.3 DeveloperExamples 41 3.3.4 Building Without XCode 42 3.4 Objective-C 43 3.4.1 Why Learn Objective-C? 44 3.4.2 AdditionstoC 44 3.4.3 ExceptionsandSynchronization 52 3.4.4 Introspection 55 3.4.5 Objective-CinC 58 3.4.6 Objective-C2.0 60 3.4.7 Blocks 63 3.4.8 Objective-C++ 66 3.5 CocoaConventions 66 3.5.1 Naming . 66 3.5.2 Memory Management . . . 70 3.5.3 Constructors and Initializers . . 72 3.6 Summary 74 II The Cocoa Frameworks 77 4 Foundation: The Objective-C Standard Library 79 4.1 GeneralConcepts 79 4.1.1 Mutability . . 80 4.1.2 ClassClusters 80 4.2 CoreFoundationTypes 85 4.3 Basic Data Types 85 4.3.1 Non-Object Types . . . 86 4.3.2 Strings 87 4.3.3 BoxedNumbersandValues 88 4.3.4 Data 90 4.3.5 CachesandDiscardableData 90 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg Contents vii 4.3.6 DatesandTime 91 4.4 Collections 93 4.4.1 Comparisons and Ordering . . . 93 4.4.2 Primitive Collections 96 4.4.3 Arrays 97 4.4.4 Dictionaries 98 4.4.5 Sets 99 4.5 Enumeration 100 4.5.1 Enumerating with Higher-Order Messaging . 101 4.5.2 EnumeratingwithBlocks 104 4.5.3 SupportingFastEnumeration 105 4.6 PropertyLists 111 4.6.1 Serialization 112 4.6.2 User Defaults 114 4.7 InteractingwiththeFilesystem 117 4.7.1 Bundles 117 4.7.2 Workspace and File Management 120 4.7.3 Working with Paths . . 122 4.7.4 FileAccess 123 4.8 Notifications 124 4.8.1 Requesting Notifications . 125 4.8.2 SendingNotifications 126 4.8.3 Sending Asynchronous Notification . . . 127 4.8.4 DistributedNotifications 130 4.9 Summary 132 5 Application Concepts 133 5.1 RunLoops 133 5.2 ApplicationsandDelegates 140 5.3 TheResponderChain 142 5.3.1 EventDelivery 142 5.3.2 TargetsandActions 146 5.3.3 Becoming First Responder 147 5.4 RunLoopsinApplications 147 5.5 DelegatesandNotifications 151 5.6 TheViewHierarchy 154 5.6.1 Windows 154 5.6.2 Views 155 5.6.3 Cells 156 5.7 Summary 157 6 Creating Graphical User Interfaces 159 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg viii Contents 6.1 PositioningViews 159 6.2 NestedViews 164 6.2.1 ClippedViews 164 6.2.2 ScrollViews 165 6.2.3 TabViews 166 6.2.4 SplitViews 167 6.2.5 Boxes 169 6.3 CreatingViews 169 6.3.1 Buttons 170 6.3.2 TextViews 172 6.3.3 DataViews 172 6.3.4 Menus 181 6.4 CocoaBindings 184 6.4.1 Key-ValueCoding 185 6.4.2 Key-ValueObserving 190 6.4.3 ExposingBindings 193 6.4.4 GenericControllers 194 6.4.5 Bindings and User Defaults . 195 6.4.6 Using Bindings in Interface Builder . . 196 6.5 Summary 202 7 Windows and Menus 203 7.1 UnderstandingWindows 204 7.1.1 TypesofWindows 207 7.2 Creating Windows 208 7.3 Creating Window Objects . . . 208 7.3.1 Displaying Windows 210 7.3.2 Hiding Windows 212 7.3.3 UnderstandingWindowControllers 214 7.3.4 CreatingaSimpleWindowFactory 214 7.3.5 Saving a Window’s Position 218 7.4 Panels 219 7.4.1 DisplayingStandardPalettes 220 7.5 Sheets 223 7.5.1 CreatingSheets 223 7.5.2 ShowingStandardSheets 224 7.6 AlertDialogs 229 7.7 Menus 232 7.7.1 The Structure of a Menu . . . 232 7.7.2 Populating the Window Menu 234 7.7.3 DockMenus 235 7.7.4 ValidatingMenuItems 236 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg Contents ix 7.7.5 Context Menus . 237 7.7.6 Pop-UpMenus 241 7.8 Summary 243 8 Text in Cocoa 245 8.1 ConstructingandDeconstructingStrings 246 8.2 AnnotatingStrings 248 8.3 Localization 250 8.3.1 LocalizationMacros 251 8.3.2 StringsFiles 252 8.3.3 LocalizingFormatStrings 253 8.4 Text Storage . . . 254 8.5 UnderstandingFonts 255 8.5.1 Converting Fonts . . 257 8.5.2 EnumeratingFonts 261 8.6 Displaying Text 261 8.6.1 Primitive Drawing 261 8.6.2 Layout Managers 264 8.6.3 Attachments 268 8.6.4 TextViews 269 8.6.5 TextCells 270 8.7 Writing a Custom Text Container . . 275 8.8 Using Multiple Text Views . . 279 8.9 Summary 283 III Co coa Documents 285 9 Creating Document-Driven Applications 287 9.1 TheCocoaDocumentModel 288 9.1.1 FileTypes 289 9.1.2 DocumentObjects 292 9.2 CreatingtheApplicationSkeleton 293 9.3 CreatingtheDocument 295 9.3.1 Loading the Windows 295 9.3.2 Building the Document Model 297 9.3.3 Loading and Saving Documents . 297 9.3.4 DocumentCreationEvents 301 9.4 Extending the Outliner . . . 301 9.4.1 Defining a Native File Format 302 9.4.2 DefiningaForeignFileFormat 304 9.4.3 Supporting Loading and Saving . 307 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ptg x Contents 9.5 Supporting Undo . . 312 9.5.1 Registering Undo Operations . 314 9.5.2 CreatingUndoGroups 316 9.5.3 PerformingUndoOperations 316 9.5.4 TheUndoUserInterface 317 9.6 Adding Undo to the Outliner 318 9.7 Summary 328 10 Core Data 329 10.1 IntroducingDataModeling 330 10.2 Understanding Managed Objects . . . 331 10.3 AttributeTypes 332 10.4 CreatingaDataModel 334 10.5 ChoosingaPersistentStore 343 10.5.1 In-MemoryStores 343 10.5.2 XMLStores 343 10.5.3 BinaryStores 344 10.5.4 SQLiteStores 344 10.5.5 CustomStores 345 10.6 StoringMetadata 345 10.7 AutomaticUndo 347 10.8 CoreData,Spotlight,andTimeMachine 348 10.9 Summary 349 IV Complex User Interfaces 351 11 Working with Structured Data 353 11.1 DataSourcesandDelegates 354 11.2 Tables 354 11.2.1 TableViewDrawing 355 11.2.2 Using Sort Descriptors 356 11.2.3 CustomizingaTableView 358 11.3 Outline Views . . 362 11.3.1 Extending the Outliner . . . 363 11.4 Browsers 376 11.4.1 BrowserDelegates 376 11.4.2 CreatingaBrowser 377 11.5 CollectionViews 380 11.5.1 Displaying Files in a Collection View . . 381 11.6 CustomizingViewswithNewCells 384 11.7 CreatingMaster-DetailViews 387 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com [...]... Summary 14 Sound 14. 1 14. 2 14. 3 395 395 396 398 399 40 3 40 7 41 2 41 3 41 8 42 2 42 6 42 9 43 3 43 4 43 5 43 8 43 9 44 3 45 3 45 7 46 3 46 8 47 0 47 1 47 2 47 5 48 1 48 2 49 1 and Video Beeping Playing Simple Sounds Understanding Cocoa Movie Objects 49 3 49 3 49 4 49 8 ... 43 6 44 3 45 0 45 5 45 8 46 1 46 4 46 7 47 0 47 5 48 0 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com xx List of Figures 13.12 13.13 13. 14 13.15 The output from printing, shown in Preview Creating an IB plugin in XCode ... on the iPhone 24. 3 OpenStep and GNU 24. 4 GNUstep 823 825 825 826 826 827 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com xvi Contents 24. 4.1 GORM 24. 4.2 Building with ´ 24. 4.3 Etoil´ e 24. 5 QuantumSTEP 24. 6 Cocotron 24. 7 GNUstepWeb... 48 1 48 3 48 8 49 0 14. 1 14. 2 14. 3 14. 4 14. 5 A simple sound player Playing a movie file Playing a sound file in the movie player Recording video with QTKit The speech feedback window 49 7 505 505 511 518 15.1 15.2 15.3 15 .4 15.5 15.6 15.7 15.8 15.9 A circle of text... 13.3 .4 Creating New Cells 13.3.5 Drawing Bitmap Images 13.3.6 Compositing Images 13 .4 Printing and Paginating Views 13 .4. 1 Print Info 13 .4. 2 Creating Print Operations 13 .4. 3 Paginating a View 13 .4. 4 Automatic Pagination 13.5 Extending Interface Builder with Palettes 13.6 Summary 14 Sound 14. 1 14. 2 14. 3 395 395... 838 838 840 841 842 843 843 844 846 849 851 851 853 855 855 857 859 8 64 865 867 869 872 873 876 879 Index GNUstep SOPE 885 From the Library of ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com List of Figures 1.1 An overview of the major components of OS X 3.1 3.2 3.3 3 .4 3.5 3.6... ALESSANDRO CAROLLO Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com xii Contents 14. 4 14. 5 14. 6 14. 7 14. 8 14. 9 14. 10 14. 11 502 506 507 508 512 513 5 14 519 15 Advanced Visual Effects 15.1 Simple Animation 15.2 Core Animation Overview 15.2.1... A form constructed from views in a nib file Creating a form with the rule editor 397 40 2 40 4 40 6 41 0 41 1 41 7 42 2 42 6 13.1 13.2 13.3 13 .4 13.5 13.6 13.7 13.8 13.9 13.10 13.11 Scribbling on a window with Core Graphics A bezier curve drawn by a bezier path A simple graphical equalizer Drawing... Toll-Free Bridging 25.3.2 Multiple Inheritance 25 .4 Optimization 25 .4. 1 Instance Method Pointers 25 .4. 2 Subverting Dynamic Dispatch 25 .4. 3 Objects on the Stack 25 .4. 4 Object Pools 25 .4. 5 Inline Functions 25 .4. 6 Avoid Objects 25.5 Cross-Platform Cocoa 25.6 The Runtime System 25.6.1 Understanding... Documents 17 .4 Spotlight 17 .4. 1 Monitoring Filesystem Events 17 .4. 2 Metadata Indexing 17 .4. 3 Building a Metadata Import Plugin 17 .4. 4 Searching with Spotlight 17 .4. 5 Spotlight Limitations 17.5 Predicates 17.5.1 The Predicate Language 17.5.2 Creating Predicates Directly 17.5.3 Using Predicates 17.5 .4 Displaying a . DatesandTime 91 4. 4 Collections 93 4. 4.1 Comparisons and Ordering . . . 93 4. 4.2 Primitive Collections 96 4. 4.3 Arrays 97 4. 4 .4 Dictionaries 98 4. 4.5 Sets 99 4. 5 Enumeration 100 4. 5.1 Enumerating. Objective-C 43 3 .4. 1 Why Learn Objective-C? 44 3 .4. 2 AdditionstoC 44 3 .4. 3 ExceptionsandSynchronization 52 3 .4. 4 Introspection 55 3 .4. 5 Objective-CinC 58 3 .4. 6 Objective-C2.0 60 3 .4. 7 Blocks 63 3 .4. 8. CreatingPrintOperations 47 2 13 .4. 3 PaginatingaView 47 5 13 .4. 4 AutomaticPagination 48 1 13.5 Extending Interface Builder with Palettes . . . 48 2 13.6 Summary 49 1 14 Sound and Video 49 3 14. 1 Beeping 49 3 14. 2 PlayingSimpleSounds

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

w