Xcode 3 Unleashed

( 2 )

Overview

Apple’s new Xcode 3 is the most powerful Mac development suite ever created. In Xcode 3 Unleashed, renowned Mac developer Fritz Anderson has written the definitive guide to making the most of Xcode 3 to build any Macintosh or iPhone application.

Anderson leads you through a simple project that covers the entire Xcode 3.x development lifecycle. You’ll walk through building and debugging command-line tools, creating Mac OS X user interfaces, modeling data, localizing languages, ...

See more details below
Available through our Marketplace sellers.
Other sellers (Paperback)
  • All (21) from $1.99   
  • New (1) from $45.00   
  • Used (20) from $1.99   
Close
Sort by
Page 1 of 1
Showing All
Note: Marketplace items are not eligible for any BN.com coupons and promotions
$45.00
Seller since 2014

Feedback rating:

(164)

Condition:

New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

New
Brand new.

Ships from: acton, MA

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Page 1 of 1
Showing All
Close
Sort by
Sending request ...

Overview

Apple’s new Xcode 3 is the most powerful Mac development suite ever created. In Xcode 3 Unleashed, renowned Mac developer Fritz Anderson has written the definitive guide to making the most of Xcode 3 to build any Macintosh or iPhone application.

Anderson leads you through a simple project that covers the entire Xcode 3.x development lifecycle. You’ll walk through building and debugging command-line tools, creating Mac OS X user interfaces, modeling data, localizing languages, compiling applications, and much more. Along the way, he introduces each of Apple’s remarkable development tools from the latest version of Interface Builder to Instruments—a powerful new tool for analyzing and optimizing your code.

Anderson shows how to manage your source code in any environment, whether you’re working solo or participating in a worldwide team. He thoroughly illuminates Xcode 3’s build system and shows how to make the most of Apple’s performance tools, led by the deep and powerful Shark statistical profiler.

Systematically updated for Xcode 3.x, this is a comprehensive revision of Anderson’s previous bestseller, Step into Xcode. Its breadth, depth, and practical focus will make it indispensable to every Mac developer: experienced programmers upgrading from Xcode 2 or migrating from CodeWarrior; UNIX/Linux programmers moving to Mac OS X; even new programmers.

Detailed information on how to…

  • Succeed with every stage of the Mac OS X application lifecycle
  • Make the most of Xcode 3’s core tools for editing, debugging, testing, and compilation
  • Get the most from new improvements to Interface Builder
  • Create robust applications using the Model-View-Controller paradigm
  • Utilize dynamic libraries and frameworks
  • Build Universal Binaries to run on both Intel and PowerPC Macs
  • Add Spotlight searchability to data files
  • Profile memory, I/O, graphics, and threading in real-time
  • Accelerate both your applications and your development processes
  • Leverage new improvements to the Xcode documentation system
  • Avoid header ambiguity, disappearing links, and other Xcode development pitfalls

Introduction 1

Part I: The Life Cycle of a Mac OS X Application

Chapter 1: Kicking the Tires 11

Chapter 2: Simple Workflow and Passive Debugging 19

Chapter 3: Simple Active Debugging 29

Chapter 4: Compilation: The Basics 39

Chapter 5: Starting a Cocoa Application 47

Chapter 6: A Cocoa Application: Views 63

Chapter 7: A Cocoa Application: Controllers 75

Chapter 8: Version Control 93

Chapter 9: Property Lists 117

Chapter 10: Libraries and Dependent Targets 141

Chapter 11: File Packages and Bundles 153

Chapter 12: Unit Testing 167

Chapter 13: Creating a Custom View 181

Chapter 14: Dynamic Libraries and Frameworks 203

Chapter 15: Documentation in Xcode 221

Chapter 16: Using the Data Modeling Tools 243

Chapter 17: Cross-Development 267

Chapter 18: Spotlight (or, How to Build a Plug-in) 281

Chapter 19: Finishing Touches 301

Part II: Xcode Tasks

Chapter 20: Navigating an Xcode Project 331

Chapter 21: Xcode for make Veterans 353

Chapter 22: More About Debugging 373

Chapter 23: Xcode and Speed 395

Chapter 24: A Legacy Project 403

Chapter 25: Shark and the CHUD Tools 421

Chapter 26: Instruments 437

Chapter 27: Closing Snippets 461

Appendices

Appendix A: Some Build Variables 475

Appendix B: Project and Target Templates 485

Appendix C: Other Resources 501

Index 507

Read More Show Less

Product Details

  • ISBN-13: 9780321552631
  • Publisher: Sams
  • Publication date: 8/15/2008
  • Series: Unleashed Series
  • Pages: 534
  • Product dimensions: 8.94 (w) x 6.92 (h) x 1.13 (d)

Meet the Author

Fritz Anderson has been writing software, books, and articles for the Macintosh since 1984. He has worked for research and development firms, consulting practices, and freelanced. He has been admitted to the Indiana bar but thought better of it. He now lives in Chicago, where he works for a large university.

Read More Show Less

Table of Contents

Introduction 1

Part I: The Life Cycle of a Mac OS X Application

Chapter 1: Kicking the Tires 11

Chapter 2: Simple Workflow and Passive Debugging 19

Chapter 3: Simple Active Debugging 29

Chapter 4: Compilation: The Basics 39

Chapter 5: Starting a Cocoa Application 47

Chapter 6: A Cocoa Application: Views 63

Chapter 7: A Cocoa Application: Controllers 75

Chapter 8: Version Control 93

Chapter 9: Property Lists 117

Chapter 10: Libraries and Dependent Targets 141

Chapter 11: File Packages and Bundles 153

Chapter 12: Unit Testing 167

Chapter 13: Creating a Custom View 181

Chapter 14: Dynamic Libraries and Frameworks 203

Chapter 15: Documentation in Xcode 221

Chapter 16: Using the Data Modeling Tools 243

Chapter 17: Cross-Development 267

Chapter 18: Spotlight (or, How to Build a Plug-in) 281

Chapter 19: Finishing Touches 301

Part II: Xcode Tasks

Chapter 20: Navigating an Xcode Project 331

Chapter 21: Xcode for make Veterans 353

Chapter 22: More About Debugging 373

Chapter 23: Xcode and Speed 395

Chapter 24: A Legacy Project 403

Chapter 25: Shark and the CHUD Tools 421

Chapter 26: Instruments 437

Chapter 27: Closing Snippets 461

Appendices

Appendix A: Some Build Variables 475

Appendix B: Project and Target Templates 485

Appendix C: Other Resources 501

Index 507

Read More Show Less

Preface

Introduction

IN THIS INTRODUCTION

  • What Xcode Is
  • What's New in Xcode 3
  • Obtaining Xcode
  • Installing Xcode

From the moment it first published Mac OS X, Apple, Inc., has made a complete suite of application development tools available to every user of the Macintosh. Since Mac OS X version 10.3, those tools have been led by Xcode, the integrated development environment Apple's own engineers use to develop system software and applications such as Safari, iTunes, Mail, and iChat. If you own a Mac, these same tools are in your hands today.

What's New in Xcode 3

In October 2007, with the introduction of Mac OS X 10.5 (Leopard), Apple introduced version 3 of the Xcode developer tools suite. Among the changes were

  • Extensive improvements to the Xcode integrated development environment (IDE), including
    • Support for Objective-C 2.0, the first major revision to the language, with commands for converting existing code to the new language.
    • Improved syntax coloring, now including distinctive colors for symbols like instance variables and method names.
    • Code Focus, a ribbon beside the editor text that lets you see how blocks of code are organized, and allows you to fold long blocks down to the height of a single line.
    • The projectwide Find command now works through the Spotlight text-searching engine, yielding better results faster.
    • A debugger bar, offering simple debugging controls in any editor window.
    • Datatips, allowing you to inspect the values of program variables during debugging, just by hovering the cursor over them in the code.
    • A mini-debugger, injected into the programs you run, permitting debugging during mouse-down events and other "volatile" situations.
    • Automatic access to the debugger whenever a program you run from Xcode crashes.
    • Improved compile-time error reporting, interleaving compiler messages with the code they relate to.
    • Automated refactoring, helping you rename classes, methods, and functions, shift methods from class to class, and even create new super classes, in an Objective-C project.
    • Much improved support for source code management tools such as Subversion, CVS, and Perforce.
    • Much improved support for using UNIX scripting languages to create and edit text.
    • The Organizer, a window to hold references to frequently used files and projects.
    • Among the command-line tools, the new xed tool enables you to open text files in Xcode, when a shell script or tool demands an interactive editor.
    • A major upgrade to the documentation system, using RSS feeds for live updates, and permitting developers to add their own documentation to the system.
    • A Research Assistant window that documents API symbols and build variables in real time, as they are selected.
  • A completely revamped Interface Builder, with better tools for crafting nonvisual parts of the human interface, such as controller objects. Integration between IB and Xcode is even tighter than before.
  • A new tool, Instruments, for profiling the resource usage (memory, I/O, graphics, threading) of a program, in real time, on a timeline so that you can see how each element of the performance picture relates to all the others.

Xcode 3 is a ground-up rebuild of the Mac OS X developer tools, and it has been well worth the wait.

Obtaining Xcode

If you have an installation DVD for Mac OS X 10.5 or a new Mac on which Leopard has come installed, you already have Xcode. On the DVD, an installation package can be found in the Xcode Tools folder inside the Optional Installs folder. On new Macs, you'll find a disk image file for Xcode Tools in the Additional Installations folder at the root of your hard drive; double-click the disk image to mount it, and you'll find the installation packages inside.

However, Apple does not always coordinate the latest version of its developer tools with its Mac OS X distributions. Even if you have an installation package on your Mac, or on your distribution disk, it pays to check for a newer version at the Apple Developer Connection (ADC).

Downloading Xcode

You must join ADC to download Xcode. Point your web browser to http://developer.apple.com/, and click the link that offers a membership (at the time of this writing, it was the Sign Up link at the top of the page). You will be offered a handful of options, some expensive. All you need is an Online membership—it's free. Fill out the forms offered to you; they will take contact information and ask you to consent to terms and conditions. There may be marketing questions and offers of mailings.

When you have completed the signup process, go to http://connect.apple.com. Fill in the username and password you chose. You will then be presented with a few options, among these being Downloads. This is what you want; click it.

Depending on your membership level, and how active Apple has been lately in releasing new software, you might not be able to find Xcode on this page. If you don't see it, click Developer Tools in the Downloads column at the right of the page. Scroll down to the first Xcode 3.x download you find (earlier releases may appear lower in the list, and versions of Xcode 2.5 may appear higher). It will be a disk image a bit over 1GB in size. This will comprise the full set of Xcode tools; there is no updater you can apply to a copy you may already have. Click to download.

Installing Xcode

Now that you have the latest Xcode package, it's time to install it. Installation packages can be run straight from a DVD, a mounted disk image file, or your hard disk. There's no difference.

In the Xcode Tools folder, you will find three installation packages:

  • XcodeTools.mpkg, which is the installation package for Xcode and the other tools needed for Mac OS X development.
  • Dashcode.mpkg provides the Dashcode IDE for producing Dashboard widgets. Dashcode is also included in the standard install from XcodeTools.mpkg; this package is for those who are interested only in developing widgets.
  • WebObjects.mpkg installs Apple's excellent WebObjects frameworks and tools, for developing sophisticated database-centered websites in Java. WebObjects is also available as an optional install from within the Xcode Tools Installer.

You will also find a folder named Packages, containing installation packages for components of the Xcode tools, like the CHUD performance-measuring suite, software development kits (SDKs) for X Window and earlier versions of Mac OS X, and version 3.3 of the gcc compiler suite (for PowerPC Macs only). All these are available as options (or within options) in the Xcode Tools Installer, but are here in case you omit them from the original installation and want to add them later.

If you've ever done an installation under Mac OS X, the Xcode tools install is familiar (see Figure I.1). Start by double-clicking the XcodeTools.mpkg installation package. A Welcome screen appears, at which you will press Continue. Next, the installer displays the license for Xcode and its related software; click Continue, and if you accede to the license, click Agree in the ensuing sheet.

Figure I.1 The Welcome panel for the Xcode Tools Installation package should be familiar to any experienced Mac user.

You are now at the Standard Install panel, but we will vary from the standard line. Click the Customize button to reveal the Custom Install panel. This panel (see Figure I.2) contains a table listing the components of the Xcode Tools installation. The single mandatory component is checked and grayed out; the optional components are active, and you can check or uncheck them to include or exclude them from the installation:

  • Developer Tools Essentials. This is Xcode itself, and the graphical and command-line programs that complement it, plus SDKs for developing Mac OS X software for versions 10.4 and later. This is a mandatory component; it doesn't make sense to install the developer tools without installing Xcode and the tools needed for it to run.
  • Figure I.2 The Custom Install panel for the Xcode Tools Installer. The top entry in the package list is for the core Xcode tools, and is not optional. In the Location column is a pop-up menu from which you can select where the developer tools are to go; the default is the Developer folder of your boot disk.

  • Developer Tools System Components. These are the CHUD tools for investigating application performance, plus facilities for distributing application builds over more than one computer. You should install this package.

  • Note - CHUD, gcc 3.3, and WebObjects are not flexible about where they are installed. They will be installed into /Developer no matter what location you choose for the Xcode tools.


  • UNIX Development Support. The "essentials" installation of Xcode installs components such as compilers and their support files in a usr subdirectory of the installation directory. If you will be doing command-line development—for instance, for building open source projects—you will want a set of development tools installed in the root /usr directory tree. This package installs copies of the command-line tools into /usr. You should install this package; examples in this book depend on it (see Chapter 24, "A Legacy Project").

  • Note - The gcc compiler suites installed with the Xcode tools are Apple-modified builds that take account of such Mac OS X features as frameworks and support for Objective-C 2.0. They are not the same as the gccs available under the same version numbers from the Free Software Foundation.


  • Core Reference Library. This package installs the panoply of introductions, references, technical notes, and sample code that document development on Mac OS X and the APIs you need to do it. Install this package.
  • Mac OS X 10.3.9 Support. Installs the SDK and tools needed to produce software that targets Panther (Mac OS X 10.3). This includes version 3.3 of the gcc compiler suite, for PPC Macs only. This package is left out of the standard install, and whether you need it depends on whether you intend to build applications for 10.3 (see Chapter 17, "Cross-Development").
  • WebObjects. This package installs the applications and files needed to develop web applications with Apple's WebObjects framework. You need not install this package.

Unlike earlier versions, Xcode 3 and 2.5 are flexible about where you install them. This is where you would make that choice. See the section "Another Install Location" for details.


Note - Earlier versions of Xcode offered to install reference material for the current Java development kits. These are still available through the Downloads section of ADC.



Note - With Xcode 3, Apple has dropped support for developing software aimed at Jaguar (Mac OS X 10.2). If you need to target 10.2, you must install Xcode 2.5 and use its 10.2.8 SDK. You cannot use Xcode 2.5 to build software using 10.5 technologies.


Now click the Install button. The standard authentication sheet will appear, into which you enter the name and password of an administrative user of your Mac.

The next panel contains a progress bar and a narrative of what is being installed. This process takes a number of minutes, at the end of which you are rewarded by a big green check mark. Close the installer; you are now ready to use Xcode.

Another Install Location

Earlier versions of Xcode (earlier than 2.5) installed themselves only in the /Developer directory of the startup file system. Having one possible path to all the developer tools greatly simplified the task of locating them: If you needed the packagemaker tool, it was at /Developer/Tools/packagemaker, and that was that.

Things have changed since then. First, the Xcode package has grown larger and larger. The download package alone is 1.1GB in size, which expands to 3.3GB installed. It is reasonable to want to put Xcode onto another disk or partition. Second, it is now possible to install Xcode 2.5 (see the section "Xcode 2.5" that follows) in parallel with Xcode 3, and the two tool sets necessarily need two homes.

That is why, during your installation of Xcode, /Developer is still the default location, but you can choose another.

If you want another location, ignore the Change Install Location button on the Standard Install panel. The Installer application offers this button as a standard part of its workflow; if you press it, you will find that the boot volume is your only choice. If you find yourself at the Install-Location panel, click the Go Back button to back out.

The real choice comes in the Custom Install panel. In the Standard Install panel, click the Customize button to get to a list of components to install. The top line, Developer Tools Essentials, has a pop-up menu for setting the location for installing the Xcode tools (see Figure I.2). The default location, /Developer, is shown initially.


Note - Yes, you can put Xcode wherever you want, but accounting for that possibility in every reference to a component of the developer tools would make this book more tedious than it has to be. I'll just refer to the Xcode tools directory as /Developer, and trust you to make the transposition yourself.


Change the location by selecting Other from the pop-up. A standard open-file sheet will appear. Find the directory that you want to contain your Xcode directory. Use the New Folder button to create the Xcode directory there. Make sure that directory is selected, and then click Choose. The selected directory will contain the Applications, Documentation, and other directories that make up the Xcode tool set.

You can continue the installation from there, as before.

Uninstalling Xcode

All things come to an end, and there is no exception for Xcode. There are two reasons you might choose to remove Xcode from your hard drive. The first is that you just do not want it; you want the files gone, and the space reclaimed.

The second is that you want to install a later version of Xcode. When Apple comes out with new versions of Xcode, it does not distribute updaters. Only the full Xcode tools package will be available for download. Past experience has shown that a full upgrader is a bigger and more accident-prone undertaking than the Xcode team can sustain, especially when the alternative is to have Xcode users simply remove the earlier version and install the new version afresh.

The developer tools come in two parts. The most prominent is the /Developer directory itself, which contains all the graphical applications, documentation, and SDKs that make up the public face of Xcode. The other part is the tools embedded throughout the UNIX file system that make development possible. For instance, two versions of the gcc compiler are installed at /usr/bin; all the headers needed for development on the current system are in the huge /usr/include hierarchy. To properly uninstall the developer tools, these, too, have to be picked through and removed.

The first part of the uninstallation is easy: Find your Xcode tools directory, and drag it into the trash. That's 100,000-plus files gone.

Next, execute the tool /Library/Developer/Shared/uninstall-devtools from the command line. uninstall-devtools is a Perl script that walks through the saved installation receipts looking for every developer tools package going back to 2001. It deletes the files of every package it finds. Running uninstall-devtools will take a few minutes. At the end, you have a system fit for a fresh install.

This procedure is good enough if you mean to reinstall the developer tools. If you mean to go further, you also want to delete the directories /Library/Developer and ~/Library/Developer, and the preference files for the individual developer applications. The usual procedure spares these, because they contain customization files you may have created, which you would want to carry over to a new installation.

Xcode 2.5

Many people have commitments to Xcode 2 that they can't get out of, even if they are running Leopard. Managers of a project nearing completion, with many developers, may be reluctant to revalidate their build processes for a new tool chain.

They might have NIBs that rely on palettes for Interface Builder 2, which are not usable in IB 3. Further, although Xcode and Interface Builder do provide "compatibility" modes, it is easy to produce files that earlier versions cannot open. Holding off on Xcode 3, at least for some projects, can be prudent.

That is why Apple released, in parallel with Xcode 3, Xcode 2.5. The Xcode 2.5 tools are strictly file compatible with those of the preceding version, Xcode 2.4. Unlike version 2.4, 2.5 can run on either Tiger (Mac OS X 10.4) or Leopard (10.5).

Like Xcode 3, Xcode 2.5 permits you to choose where to install its developer tools. As with the Xcode 3 installation, you are offered a Customize button for editing the components to be installed. The top component, representing the core developer tools, will have a pop-up enabling you to chose where to install Xcode 2.5. The default location is /Xcode2.5.

If you intend to develop specifically for Mac OS X 10.5, Xcode 2.5 is not for you; it does not support the Leopard SDK. For Leopard development, you have to use Xcode 3.

If you have Project Builder (.pbxproj) projects around, now is the time to convert them to Xcode projects, and 2.5 is the tool to do it. Xcode 3 has dropped the capability to import Project Builder projects.

Having two Xcodes on your system gives you two versions of Xcode-related command-line tools such as xcodebuild. If you opt (as I strongly recommend) to install tools in /usr/bin, it is a nice question which version of a tool is run when you execute it from the command line or a build script. The solution is this: The /usr/bin versions of these tools are in fact scripts that refer to the binary versions in the Xcode 3 or 2.5 install tree. You determine which version is used by running the xcode-select tool; man xcode-select for details.

© Copyright Pearson Education. All rights reserved.

Read More Show Less

Customer Reviews

Average Rating 1.5
( 2 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(1)

1 Star

(1)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 2 Customer Reviews
  • Posted August 3, 2010

    Badly Out of Date

    The book is virtually useless because Xcode's compiler has been updated so much. For instance the very first example, once you fix the missing comma, it actually runs without any errors. This book was written for Xcode 3.0 but they're up to Xcode 3.2.3 now and the next release will be 4.0 in a few months.

    I had no problem with the math, programming is a form of language with math intertwined so I actually found that bit very nice.

    I actually gave up on the book shortly after buying it because there's no source code available online so you have to type in all the code yourself. If you buy the PDF version from Safari like I did it doesn't come with the any code (the hard copy does have a CD).

    The reason I picked it back up today was because I ran across the author's website for the source code at x3u (dot) manoverboard (dot) org but unfortunately the author did not keep his promise to publish updates so there's not new info even for Xcode 3.1.

    Over all I can not recommend this book even a little bit and am quite disappointed in my own purchase.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted January 8, 2010

    Great reference if you have an advanced math degree

    I was excited at first. The book has lots of screen shots to illustrate the step-by-step approach to downloading and installing the developers kit. Being a coder for decades, Part 1 was simple to understand. Then we get to Chapter 2, page 20, where our first practice example is coding a linear regression routine. (Apparently, plotting Space Shuttle trajectory options based on fuel/load capacities was too easy.) The rest of the book expands using more and more complex mathematics. This is not what I was looking for.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing all of 2 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)