前言 致谢 关于作者 Chapter 1: Accustoming Yourself to Objective-C Item 1: Familiarize Yourself with Objective-C’s Roots Item 2: Minimize Importing Headers in Headers Item 3: Prefer Literal Syntax over the Equivalent Methods Item 4: Prefer Typed Constants to Preprocessor #define Item 5: Use Enumerations for States, Options, and Status Codes Chapter 2: Objects, Messaging, and the Runtime Item 6: Understand Properties Item 7: Access Instance Variables Primarily Directly When Accessing Them Internally Item 8: Understand Object Equality Item 9: Use the Class Cluster Pattern to Hide Implementation Detail Item 10: Use Associated Objects to Attach Custom Data to Existing Classes Item 11: Understand the Role of objc_msgSend Item 12: Understand Message Forwarding Item 13: Consider Method Swizzling to Debug Opaque Methods Item 14: Understand What a Class Object Is Chapter 3: Interface and API Design Item 15: Use Prefix Names to Avoid Namespace Clashes Item 16: Have a Designated Initializer Item 17: Implement the description Method Item 18: Prefer Immutable Objects Item 19: Use Clear and Consistent Naming Item 20: Prefix Private Method Names Item 21: Understand the Objective-C Error Model Item 22: Understand the NSCopying Protocol Chapter 4: Protocols and Categories Item 23: Use Delegate and Data Source Protocols for Interobject Communication Item 24: Use Categories to Break Class Implementations into Manageable Segments Item 25: Always Prefix Category Names on Third-Party Classes Item 26: Avoid Properties in Categories Item 27: Use the Class-Continuation Category to Hide Implementation Detail Item 28: Use a Protocol to Provide Anonymous Objects Chapter 5: Memory Management Item 29: Understand Reference Counting Item 30: Use ARC to Make Reference Counting Easier Item 31: Release References and Clean Up Observation State Only in dealloc Item 32: Beware of Memory Management with Exception-Safe Code Item 33: Use Weak References to Avoid Retain Cycles Item 34: Use Autorelease Pool Blocks to Reduce High-Memory Waterline Item 35: Use Zombies to Help Debug Memory-Management Problems Item 36: Avoid Using retainCount Chapter 6: Blocks and Grand Central Dispatch Item 37: Understand Blocks Item 38: Create typedefs for Common Block Types Item 39: Use Handler Blocks to Reduce Code Separation Item 40: Avoid Retain Cycles Introduced by Blocks Referencing the Object Owning Them Item 41: Prefer Dispatch Queues to Locks for Synchronization Item 42: Prefer GCD to performSelector and Friends Item 43: Know When to Use GCD and When to Use Operation Queues Item 44: Use Dispatch Groups to Take Advantage of Platform Scaling Item 45: Use dispatch_once for Thread-Safe Single-Time Code Execution Item 46: Avoid dispatch_get_current_queue Chapter 7: The System Frameworks Item 47: Familiarize Yourself with the System Frameworks Item 48: Prefer Block Enumeration to for Loops Item 49: Use Toll-Free Bridging for Collections with Custom Memory-Management Semantics Item 50: Use NSCache Instead of NSDictionary for Caches Item 51: Keep initialize and load Implementations Lean Item 52: Remember that NSTimer Retains Its Target Index
以下为对购买帮助不大的评价