Jump To:
Leopard Technical Q&As
Cocoa is an object-oriented application environment designed for developing Mac OS X native applications. The Cocoa frameworks support rapid development and high productivity. Cocoa provides developers starting new Mac OS X projects the fastest way to full-featured implementations. Applications from other platforms can also be brought to Mac OS X quickly using Cocoa.

A guided introduction and learning path for developers new to Cocoa.   Essential information for developers using Objective-C.   Objective-C API references organized by framework.
Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Topic
Sort by
Date
Crash in ABAddPropertiesAndTypes (HTML)
QA1404: How to correctly add custom Address Book properties using ABAddPropertiesAndTypes
Apple Applications 2005-04-04
CoreAudio Overload Warnings (HTML)
QA1467: Describes CoreAudio overload warnings what they mean and how to avoid them.
Audio 2006-03-29
Using NSSound with CoreAudio on Mac OS 10.3.x (HTML)
QA1394: Workaround the NULL input buffers in a Core Audio IOProc callback when using NSSound by using AudioDeviceAddIOProc
Audio 2006-03-29
BOM characters in 'utxt' clipboard flavor (HTML) (日本語 HTML)
QA1221: Explains the use of the BOM character in 'utxt' scrap data
Data Management 2003-01-20
CFXML to CFPropertyListRef (and back!) (HTML) (日本語 HTML)
QA1208: Describes to how save and restore a CFPropertyListRef to and from an XML file.
Data Management 2003-08-29
Setting environment variables for user processes (HTML)
QA1067: Tells how to set environment variables for user processes.
Data Management 2001-10-25
Why does -stringByTrimmingCharactersInSet: give me an empty string result when it shouldn't? (HTML) (日本語 HTML)
QA1202: Why -stringByTrimmingCharactersInSet: sometimes returns an empty string result in Mac OS X 10.2.x when it shouldn't.
Data Management 2002-10-15
CFBundleIdentifier and user application access (HTML)
QA1373: Describes the role of CFBundleIdentifier in limiting a user's application access.
Design Guidelines 2005-02-08
Common mistakes with delegation in Cocoa (HTML)
QA1554: The two most common errors that lead to a delegate method not being received.
Design Guidelines 2008-02-27
Connecting the Font Menu in Interface Builder 3 (HTML)
QA1571: How to connect and configure the Font/Format menus in Interface Builder 3.
Design Guidelines 2008-01-21
Detecting specific ROM-in-RAM Mac (HTML) (日本語 HTML)
Deprecated - HW49: Identifying a Mac by name ("iMac"), and better alternatives for determining specific features ("has Firewire").
Design Guidelines 1999-10-05
Background-only apps with NSStatusItems become active in 10.1 on NSStatusItem clicks (HTML)
QA1081: Preventing background-only apps from activating when their NSStatusItem(s) are clicked in Mac OS X 10.1.
Events & Other Input 2001-10-30
Detecting the Caps Lock Key (HTML)
QA1519: Explains how to detect when the caps lock key is turned on and off.
Events & Other Input 2007-05-11
Driving OpenGL Rendering Loops (HTML)
QA1385: Using Core Video display links (CVDisplayLink) or Cocoa timers (NSTimer) to drive an OpenGL rendering loop
Events & Other Input 2009-05-01
Power Management; Policy Maker vs. Power Controller (HTML) (日本語 HTML)
QA1121: Describes the differences between a Power Management Policy Maker and a Power Management Power Controller.
Events & Other Input 2002-02-13
Programmatically causing restart, shutdown and/or logout (HTML) (日本語 HTML)
QA1134: Describes how to programmatically cause restart, shutdown, sleep or logout.
Events & Other Input 2008-09-24
Why aren't my tracking rects working? (HTML)
QA1355: Describes a common mistake in setting up cursor-tracking rectangles.
Events & Other Input 2004-12-02
Avoiding the -42 error with DiscRecording (HTML)
QA1292: Explains how to workaround the -42 error when using the DiscRecording API.
File Management 2004-05-25
Expanding Tilde-based paths (HTML)
QA1549: Demonstrates how to resolve tilde-based relevant paths.
File Management 2008-09-08
FSSetCatalogInfo versus UID and GID (HTML) (日本語 HTML)
QA1251: Describes why FSSetCatalogInfo does not set the UID and GID of the file, and provides a work around.
File Management 2003-03-26
NSOpenPanel - Choosing any file and ignoring packages (HTML)
QA1468: Explains how to configure NSOpenPanel to filter only files and ignoring packages.
File Management 2007-01-25
Sorting Like the Finder (HTML)
QA1159: Shows how to sort strings like the Finder's list view.
File Management 2004-10-27
Third party VFS can't unmount on Mac OS X 10.3 (HTML)
QA1308: Describes changes in unmounting behavior for VFS plug-ins under Mac OS X 10.3 "Panther."
File Management 2003-10-23
Using UTIs to Identify Image Files (HTML)
QA1518: Explains how to use Uniform Type Identifiers to identify what files can be opened at images.
File Management 2007-05-11
Weak Linking To Spotlight (HTML)
QA1422: Describes a problem with weak linking to Spotlight (the Metadata framework), and its solution.
File Management 2005-06-03
CGBitmapContextCreate Supported Color Spaces (HTML)
QA1037: Lists the color space and alpha info combinations currently supported by CGBitmapContextCreate.
Games 2007-07-18
Core Animation properties and Reference Counting (HTML)
QA1565: Describes a discrepancy between the property declarations in Core Animation and the actual behavior.
Games 2008-11-24
Driving OpenGL Rendering Loops (HTML)
QA1385: Using Core Video display links (CVDisplayLink) or Cocoa timers (NSTimer) to drive an OpenGL rendering loop
Games 2009-05-01
Getting the pixel data from a CGImage object (HTML)
QA1509: Describes how to access the pixel data of a CGImage object
Games 2008-08-27
How can I programmatically determine the DPI of the current video mode? (HTML) (日本語 HTML)
QA1217: Describes how to compute the DPI for a given display in a given mode using Core Graphics.
Games 2002-12-02
How do I tell if a particular display is being hardware accelerated by Quartz Extreme? (HTML) (日本語 HTML)
QA1218: Describes how to use CGDisplayUsesOpenGLAcceleration to see if a display is accelerated or not.
Games 2002-12-04
Requirements for Quartz GL (HTML)
QA1536: Describes the requirements for enabling Quartz GL.
Games 2008-08-08
Setting environment variables for user processes (HTML)
QA1067: Tells how to set environment variables for user processes.
Games 2001-10-25
Animating the frame of a CALayer. (HTML)
QA1620: Explains how the frame property of a layer interacts with animations.
Graphics & Imaging 2008-10-24
CGBitmapContextCreate Supported Color Spaces (HTML)
QA1037: Lists the color space and alpha info combinations currently supported by CGBitmapContextCreate.
Graphics & Imaging 2007-07-18
CGContext Bounds (HTML)
QA1048: Explains how to determine the bounds of a CGContext.
Graphics & Imaging 2001-07-02
CGContextAddLineToPoint, CGContextAddCurveToPoint, et. al. (HTML)
QA1049: Explains why the CGContextAddXYZ APIs don't draw anything immediately.
Graphics & Imaging 2001-07-02
CGContextClosePath (HTML)
QA1046: Explains when you should call CGContextClosePath.
Graphics & Imaging 2001-10-02
CGImageRef contents are immutable (HTML) (日本語 HTML)
QA1276: Explains that CGImageRef contents are considered immutable once created.
Graphics & Imaging 2003-07-17
Core Animation properties and Reference Counting (HTML)
QA1565: Describes a discrepancy between the property declarations in Core Animation and the actual behavior.
Graphics & Imaging 2008-11-24
Debugging Graphics with QuartzDebug (HTML) (日本語 HTML)
QA1236: Explains how to use QuartzDebug to debug graphics issues.
Graphics & Imaging 2006-01-12
Drawing a Path Multiple Times (HTML)
QA1047: Explains that path drawing operations consume the path.
Graphics & Imaging 2001-07-02
Driving OpenGL Rendering Loops (HTML)
QA1385: Using Core Video display links (CVDisplayLink) or Cocoa timers (NSTimer) to drive an OpenGL rendering loop
Graphics & Imaging 2009-05-01
Finding an NSView's current magnification. (HTML)
QA1346: How to discover the current magnification (zoom level) of any NSView.
Graphics & Imaging 2005-03-08
Getting the pixel data from a CGImage object (HTML)
QA1509: Describes how to access the pixel data of a CGImage object
Graphics & Imaging 2008-08-27
How can I optimize a Quartz Composer composition depending on the hardware it runs on? (HTML)
QA1433: Explains how to design compositions that adapt to the hardware limitations.
Graphics & Imaging 2005-06-01
How can I programmatically determine the DPI of the current video mode? (HTML) (日本語 HTML)
QA1217: Describes how to compute the DPI for a given display in a given mode using Core Graphics.
Graphics & Imaging 2002-12-02
How do I determine how much VRAM is available on my video card? (HTML)
QA1168: Using Core Graphics and IOKit to find the physical size of VRAM on installed hardware.
Graphics & Imaging 2004-10-11
How do I get the hexadecimal value of an NSColor object? (HTML)
QA1576: Describes how to convert an NSColor object to its Hexadecimal value.
Graphics & Imaging 2007-12-19
How do I tell if a particular display is being hardware accelerated by Quartz Extreme? (HTML) (日本語 HTML)
QA1218: Describes how to use CGDisplayUsesOpenGLAcceleration to see if a display is accelerated or not.
Graphics & Imaging 2002-12-04
How to measure CG text (HTML)
QA1051: Explains how to measure Core Graphics text.
Graphics & Imaging 2007-08-02
Is ColorSync thread safe? (HTML) (日本語 HTML)
QA1261: Discusses ColorSync thread-safety issues.
Graphics & Imaging 2003-04-17
NSOpenGLView redraw problems after a window is closed and re-opened. (HTML)
QA1353: Workaround for NSOpenGLView failure to draw after its window is closed and re-opened.
Graphics & Imaging 2004-12-03
Quartz 2D Interpolation (HTML) (日本語 HTML)
QA1186: Explains how to control Quartz 2D's image interpolation.
Graphics & Imaging 2002-10-29
Quartz 2D Thread Safety (HTML) (日本語 HTML)
QA1238: Explains the thread-safety issues for the Quartz 2D API.
Graphics & Imaging 2003-02-25
Requirements for Quartz GL (HTML)
QA1536: Describes the requirements for enabling Quartz GL.
Graphics & Imaging 2008-08-08
Saving the current Core Graphics Path (HTML)
QA1056: Explains that the Core Graphics save and restore GState APIs do not affect the path.
Graphics & Imaging 2001-10-02
Setting the ColorSync profile for a NSBitmapImageRep object (HTML)
QA1369: Setting the ColorSync profile for a NSBitmapImageRep object
Graphics & Imaging 2004-09-08
Shearing a Coordinate Space with NSAffineTransform (HTML) (日本語 HTML)
QA1332: Describes a simple way to shear coordinate spaces by adding a few methods to the NSAffineTransform class.
Graphics & Imaging 2004-01-29
Turning Off Core Graphics Clipping (HTML)
QA1050: Explains how to clear the clipping path for a CGContext.
Graphics & Imaging 2001-07-02
Unexpected CG state changes (HTML)
QA1045: Explains why the Core Graphics drawing state sometimes changes for no apparent reason.
Graphics & Imaging 2001-07-02
Using Interface Builder's NSOpenGLView or Custom View objects for an OpenGL application (HTML)
QA1167: Describes usage cases for both NSOpenGLViews and Custom Views for Cocoa OpenGL applications
Graphics & Imaging 2004-10-28
Using UTIs to Identify Image Files (HTML)
QA1518: Explains how to use Uniform Type Identifiers to identify what files can be opened at images.
Graphics & Imaging 2007-05-11
BOM characters in 'utxt' clipboard flavor (HTML) (日本語 HTML)
QA1221: Explains the use of the BOM character in 'utxt' scrap data
Interapplication Communication 2003-01-20
How to add other pasteboard types to an HFS Promise drag in Cocoa (HTML)
QA1300: Explains how to add other pasteboard types to an HFS Promise drag in Cocoa.
Interapplication Communication 2003-09-15
How to set a custom drag image when doing an HFS Promise drag in Cocoa (HTML)
QA1200: Explains how to set a custom drag image when doing an HFS Promise drag in Cocoa.
Interapplication Communication 2003-09-15
Public UTIs supported by Mac OS X v10.3 (HTML)
QA1406: Lists the public UTIs (Uniform Type Identifiers) used by the Pasteboard in Mac OS X v10.3.
Interapplication Communication 2005-02-08
Re-enabling dragging from NSTableView to other applications (HTML) (日本語 HTML)
QA1220: Explains how to re-enable drag-and-drop from NSTableViews to other applications
Interapplication Communication 2008-02-08
Sending an Email (HTML)
QA1084: Shows how to create an email in the user's prefered email application.
Interapplication Communication 2004-11-05
Converting to Precomposed Unicode (HTML) (日本語 HTML)
QA1235: Describes how to convert a string to precomposed Unicode.
Internationalization 2003-02-07
How can I determine the order of the languages set by the user in the Language tab of the International preference pane? (HTML)
QA1391: Retrieving the order of the languages set by the International preference pane in Cocoa, Carbon, and Terminal.
Internationalization 2006-12-19
Obtaining the localized application name in Cocoa (HTML)
QA1544: Describes how to obtain several versions of the application name in Cocoa.
Internationalization 2007-09-21
Availability of Quartz Composer Patches in Web Kit (HTML)
QA1505: Details which Quartz Composer patches are available in Web Kit
Internet & Web 2007-03-05
Debugging a WebKit Plug-in in Xcode (HTML)
QA1500: Directions for debugging a WebKit plug-in in Xcode.
Internet & Web 2007-06-05
Getting a Packet Trace (HTML) (日本語 HTML)
QA1176: Lists tools available for looking at the network packets on the wire.
Internet & Web 2008-06-03
Sending an Email (HTML)
QA1084: Shows how to create an email in the user's prefered email application.
Internet & Web 2004-11-05
Comparing selectors in Cocoa-Java code (HTML)
Deprecated - QA1069: Explains why Objective-C and Java selectors appear to be the same name but equality tests fail.
Java 2001-08-31
Allocate and Disk Full Error (HTML) (日本語 HTML)
FL12: Discusses a problem with AFP volumes displaying incorrect free space, and returning disk full errors.
Networking 1999-07-21
Bonjour and wake from sleep (HTML)
QA1290: Explains why applications that use Bonjour should stay registered and continue browsing on sleep.
Networking 2003-09-18
Bonjour enforces the service type format in Panther (HTML)
QA1198: Explains why registering a Bonjour service might fail on Panther.
Networking 2004-03-23
Bonjour enforces the TXT record format in Panther (HTML)
QA1306: Explains how mDNSResponder enforces the proper TXT record format in Panther.
Networking 2004-07-14
Bonjour Printer Subtype for HTTP (HTML)
QA1555: Describes how printer vendors can register their bonjour service such that Safari can see them.
Networking 2008-03-25
Bonjour TXT record rate limiting in Panther (HTML)
QA1293: Explains how mDNSResponder implements TXT record rate limiting in Panther.
Networking 2003-10-23
Changing the TCP Window Size (HTML)
NW47: Describes how to change the TCP window size in Open Transport.
Networking 1997-03-14
Discovering all advertised Bonjour service types (HTML)
QA1337: Explains how to discover all Bonjour service types being advertised on the local network.
Networking 2004-06-01
Don't forget to cancel your Bonjour resolve (HTML)
QA1297: Explains why it's important to cancel a Bonjour resolve operation.
Networking 2007-08-30
Downloading through a proxy server in Mac OS X (HTML)
QA1296: Explains when downloading through a proxy server will work, and when it will fail.
Networking 2003-10-29
Getting a Packet Trace (HTML) (日本語 HTML)
QA1176: Lists tools available for looking at the network packets on the wire.
Networking 2008-06-03
PPPoE Server for Testing (HTML) (日本語 HTML)
QA1252: Describes how to configure Mac OS X as a PPPoE server for testing purposes.
Networking 2003-04-11
Problems getting Bonjour TXT record information (HTML)
QA1389: Explains why you might have problems retrieving TXT record information from a CFNetServiceRef or NSNetService.
Networking 2005-07-06
Resolves may return an IPv6 address in Panther (HTML)
QA1298: Explains why you get an IP address of 0.0.0.0 when resolving a Bonjour service.
Networking 2005-01-10
Sending an Email (HTML)
QA1084: Shows how to create an email in the user's prefered email application.
Networking 2004-11-05
T_DATA_REQ vs M_DATA TPI Message Blocks (HTML) (日本語 HTML)
NW42: Explains why OT passes data to a TPI module using M_DATA message blocks instead of M_PROTO+T_DATA_REQ.
Networking 1996-10-25
Updating the TXT record of a Bonjour service (HTML)
QA1302: Explains how to update a Bonjour TXT record while running on either Jaguar or Panther.
Networking 2004-07-14
Use the Computer Name when registering your Bonjour service (HTML)
QA1228: Explains why you should use the Computer Name when advertising a Bonjour service.
Networking 2004-03-05
Building Objective-C static libraries with categories (HTML)
QA1490: Describes how to properly build Objective-C static libraries that contain categories on existing classes.
Objective-C Language 2006-10-03
Common mistakes with delegation in Cocoa (HTML)
QA1554: The two most common errors that lead to a delegate method not being received.
Objective-C Language 2008-02-27
Core Animation properties and Reference Counting (HTML)
QA1565: Describes a discrepancy between the property declarations in Core Animation and the actual behavior.
Objective-C Language 2008-11-24
Determining if an application uses Objective-C Garbage Collection (HTML)
QA1599: Shows how to determine if an application or executable is using Objective-C Garbage Collection.
Objective-C Language 2008-09-08
How do I get the hexadecimal value of an NSColor object? (HTML)
QA1576: Describes how to convert an NSColor object to its Hexadecimal value.
Objective-C Language 2007-12-19