Cocoa+(API)

Embed Size (px)

Citation preview

  • 7/31/2019 Cocoa+(API)

    1/6

    Cocoa (API) 1

    Cocoa (API)

    Cocoa

    Developer(s) Apple

    Written in Objective-C

    Operating system Mac OS X

    Type Software framework

    License Proprietary

    WebsiteApple Developer Cocoa

    [1]

    Cocoa is Apple's native object-oriented application programming interface (API) for the Mac OS X operating system

    andalong with the Cocoa Touch extension for gesture recognition and animationfor applications for the iOS

    operating system, used on Apple devices such as the iPhone, the iPod Touch, and the iPad.Cocoa applications are typically developed using the development tools provided by Apple, specifically Xcode

    (formerly Project Builder) and Interface Builder, using the Objective-C language. However, the Cocoa programming

    environment can be accessed using other tools, such as Clozure CL, LispWorks, Object Pascal, Python, Perl, Ru by,

    and AppleScript with the aid of bridging mechanisms such as PasCocoa, PyObjC, CamelBones and RubyCocoa. An

    implementation of the Ruby language, called MacRuby, which does away with the requirement for a bridging

    mechanism, is under development by Apple, while Nu is a Lisp-like language which can be used with Cocoa without

    a bridge. It is also possible to write Objective-C Cocoa programs in a simple text editor and build it manually with

    GCC or clang from the command line or from a makefile.

    For end-users, Cocoa applications are considered to be those written using the Cocoa programming environment.

    Such applications usually have a distinctive feel, since the Cocoa programming environment automates many aspects

    of an application to comply with Apple's human interface guidelines.

    Cocoa history

    Further information: History of Mac OS X

    Cocoa continues the lineage of several frameworks (primarily the AppKitandFoundation Kit) from the NeXTSTEP

    and OpenStep programming environments developed by NeXT in the 1980s and 1990s. Apple acquired NeXT in

    December 1996, and subsequently went to work on the Rhapsody operating system that was supposed to be the

    direct successor of OpenStep. It was to have had an emulation base for Mac OS applications, calledBlue Box. The

    OpenStep base of libraries and binary support was termed Yellow Box. Rhapsody evolved into Mac OS X, and the

    Yellow Box became Cocoa. As a result, Cocoa classes begin with the acronym "NS" (standing either for the

    NeXT-Sun creation of OpenStep, or for the original proprietary term for the OpenStep framework, NeXTSTEP):

    NSString, NSArray, etc.[2]

    Much of the work that went into developing OpenStep was applied to the development of Mac OS X, Cocoa bei ng

    the most visible part. There are, however, some differences. For example, NeXTSTEP and OpenStep used Display

    PostScript for on-screen display of text and graphics, while Cocoa depends on Apple's Quartz (which uses the PDF

    imaging model, but not its underlying technology). Cocoa also has a level of Internet support, including the NSURL

    and WebKit HTML classes, and others. While under OpenStep there was only rudimentary support for managed

    network connections through NSFileHandle classes and Berkeley sockets.

    Before its current use, the "Cocoa" trademark was the name of an application that helped children create multimedia

    projects. Originally known as KidSim, as of 2011 it is licensed to a third party and marketed as Stagecast Creator.

    http://en.wikipedia.org/w/index.php?title=Berkeley_socketshttp://en.wikipedia.org/w/index.php?title=Stagecast_Creatorhttp://en.wikipedia.org/w/index.php?title=Berkeley_socketshttp://en.wikipedia.org/w/index.php?title=Berkeley_socketshttp://en.wikipedia.org/w/index.php?title=Berkeley_socketshttp://en.wikipedia.org/w/index.php?title=Stagecast_Creatorhttp://en.wikipedia.org/w/index.php?title=Stagecast_Creatorhttp://en.wikipedia.org/w/index.php?title=Stagecast_Creatorhttp://en.wikipedia.org/w/index.php?title=Berkeley_socketshttp://en.wikipedia.org/w/index.php?title=HTMLhttp://en.wikipedia.org/w/index.php?title=Portable_Document_Formathttp://en.wikipedia.org/w/index.php?title=Quartz_%28graphics_layer%29http://en.wikipedia.org/w/index.php?title=Display_PostScripthttp://en.wikipedia.org/w/index.php?title=Display_PostScripthttp://en.wikipedia.org/w/index.php?title=Mac_OShttp://en.wikipedia.org/w/index.php?title=Rhapsody_%28operating_system%29http://en.wikipedia.org/w/index.php?title=NeXThttp://en.wikipedia.org/w/index.php?title=OpenStephttp://en.wikipedia.org/w/index.php?title=NeXTSTEPhttp://en.wikipedia.org/w/index.php?title=History_of_Mac_OS_Xhttp://en.wikipedia.org/w/index.php?title=Human_interface_guidelineshttp://en.wikipedia.org/w/index.php?title=Application_softwarehttp://en.wikipedia.org/w/index.php?title=End-user_%28computer_science%29http://en.wikipedia.org/w/index.php?title=Makefilehttp://en.wikipedia.org/w/index.php?title=Clanghttp://en.wikipedia.org/w/index.php?title=GNU_Compiler_Collectionhttp://en.wikipedia.org/w/index.php?title=Text_editorhttp://en.wikipedia.org/w/index.php?title=Lisp_%28programming_language%29http://en.wikipedia.org/w/index.php?title=Nu_%28programming_language%29http://en.wikipedia.org/w/index.php?title=MacRubyhttp://en.wikipedia.org/w/index.php?title=RubyCocoahttp://en.wikipedia.org/w/index.php?title=CamelBoneshttp://en.wikipedia.org/w/index.php?title=PyObjChttp://en.wikipedia.org/w/index.php?title=PasCocoahttp://en.wikipedia.org/w/index.php?title=AppleScripthttp://en.wikipedia.org/w/index.php?title=Ruby_%28programming_language%29http://en.wikipedia.org/w/index.php?title=Perlhttp://en.wikipedia.org/w/index.php?title=Python_%28programming_language%29http://en.wikipedia.org/w/index.php?title=Object_Pascalhttp://en.wikipedia.org/w/index.php?title=LispWorkshttp://en.wikipedia.org/w/index.php?title=Clozure_CLhttp://en.wikipedia.org/w/index.php?title=Objective-Chttp://en.wikipedia.org/w/index.php?title=Interface_Builderhttp://en.wikipedia.org/w/index.php?title=Project_Builderhttp://en.wikipedia.org/w/index.php?title=Xcodehttp://en.wikipedia.org/w/index.php?title=IPadhttp://en.wikipedia.org/w/index.php?title=IPod_Touchhttp://en.wikipedia.org/w/index.php?title=IPhonehttp://en.wikipedia.org/w/index.php?title=IOS_%28Apple%29http://en.wikipedia.org/w/index.php?title=Applicationshttp://en.wikipedia.org/w/index.php?title=Animationhttp://en.wikipedia.org/w/index.php?title=Gesture_recognitionhttp://en.wikipedia.org/w/index.php?title=Cocoa_Touchhttp://en.wikipedia.org/w/index.php?title=Operating_systemhttp://en.wikipedia.org/w/index.php?title=Mac_OS_Xhttp://en.wikipedia.org/w/index.php?title=Application_programming_interfacehttp://en.wikipedia.org/w/index.php?title=Object-orientedhttp://en.wikipedia.org/w/index.php?title=Apple_Inc.http://developer.apple.com/technologies/mac/cocoa.htmlhttp://en.wikipedia.org/w/index.php?title=Proprietary_softwarehttp://en.wikipedia.org/w/index.php?title=Software_licensehttp://en.wikipedia.org/w/index.php?title=Software_frameworkhttp://en.wikipedia.org/w/index.php?title=List_of_software_categorieshttp://en.wikipedia.org/w/index.php?title=Mac_OS_Xhttp://en.wikipedia.org/w/index.php?title=Operating_systemhttp://en.wikipedia.org/w/index.php?title=Objective-Chttp://en.wikipedia.org/w/index.php?title=Programming_languagehttp://en.wikipedia.org/w/index.php?title=Apple_Inc.http://en.wikipedia.org/w/index.php?title=Software_developer
  • 7/31/2019 Cocoa+(API)

    2/6

    Cocoa (API) 2

    The program was discontinued in one of the rationalizations that followed Steve Jobs' return to Apple. The name was

    re-used to avoid the delay while registering a new trademark, with Stagecast agreeing to market the older Cocoa

    under a new name.

    Memory management

    One feature of the Cocoa environment is its facility for managing dynamically allocated memory. Cocoa's NSObject

    class, from which most classes, both vendor and user, are derived, implements a reference counting scheme for

    memory management. Objects derived from the NSObject root class respond to a retain and a release

    message and keep a retain count which can be queried by sending a retainCount message. A newly allocated

    object created with alloc or copy has a retain count of one. Sending that object a retain message increments

    the retain count, while sending it a release message decrements the retain count. When an object's retain count

    reaches zero, it is deallocated similar to a C++ destructor. dealloc is not guaranteed to be invoked.

    Starting with Objective-C 2.0, the Objective-C runtime implements an optional garbage collector. In this model, the

    runtime turns Cocoa reference counting operations such as "retain" and "release" into no-ops. The garbage collector

    does not exist on the iOS implementation of Objective-C 2.0. Garbage Collection in Objective-C runs on a

    low-priority background thread, and can halt on Cocoa's user events, with the intention of keeping the user

    experience responsive.

    In 2011, the LLVM compiler introduced ARC (automated reference counting), which replaces the conventional

    garbage collector by performing static analysis of Objective-C source code and inserting retain and release messages

    as necessary.

    Main frameworks

    Cocoa consists primarily of two Objective-C object libraries calledframeworks. Frameworks are functionally similar

    to shared libraries, a compiled object that can be dynamically loaded into a program's address space at runtime, but

    frameworks add associated resources, header files, and documentation. The Cocoa frameworks are implemented as a

    type of application bundle, containing the aforementioned items in standard locations.

    Foundation Kit, or more commonly simply Foundation, first appeared in OpenStep. On Mac OS X, it is based on

    Core Foundation. Foundation is a generic object-oriented library providing string and value manipulation,

    containers and iteration, distributed computing, run loops, and other functions that are not directly tied to the

    graphical user interface. The "NS" prefix, used for all classes and constants in the framework, comes from

    Cocoa's OPENSTEP heritage, which was jointly developed by NeXT and Sun.

    Application Kitor AppKit is directly descended from the original NeXTSTEP Application Kit. It contains code

    with which programs can create and interact with graphical user interfaces. AppKit is built on top of Foundation,

    and uses the same "NS" prefix.

    A key part of the Cocoa architecture is its comprehensive views model. This is organized along conventional lines

    for an application framework, but is based on the PDF drawing model provided by Quartz. This allows creation of

    custom drawing content using PostScript-like drawing commands, which also allows automatic printer support and

    so forth. Since the Cocoa framework manages all the clipping, scrolling, scaling and other chores of drawing

    graphics, the programmer is freed from implementing basic infrastructure and can concentrate only on the unique

    aspects of an application's content.

    http://en.wikipedia.org/w/index.php?title=PostScripthttp://en.wikipedia.org/w/index.php?title=Quartz_%28graphics_layer%29http://en.wikipedia.org/w/index.php?title=Portable_Document_Formathttp://en.wikipedia.org/w/index.php?title=Graphical_user_interfacehttp://en.wikipedia.org/w/index.php?title=Application_Kithttp://en.wikipedia.org/w/index.php?title=Sunhttp://en.wikipedia.org/w/index.php?title=Constant_%28programming%29http://en.wikipedia.org/w/index.php?title=Event_loophttp://en.wikipedia.org/w/index.php?title=Distributed_computinghttp://en.wikipedia.org/w/index.php?title=Iterationhttp://en.wikipedia.org/w/index.php?title=Container_%28data_structure%29http://en.wikipedia.org/w/index.php?title=String_%28computer_science%29http://en.wikipedia.org/w/index.php?title=Core_Foundationhttp://en.wikipedia.org/w/index.php?title=Foundation_Kithttp://en.wikipedia.org/w/index.php?title=Application_bundlehttp://en.wikipedia.org/w/index.php?title=Library_%28computer_science%29http://en.wikipedia.org/w/index.php?title=Application_frameworkhttp://en.wikipedia.org/w/index.php?title=Objective-Chttp://en.wikipedia.org/w/index.php?title=LLVMhttp://en.wikipedia.org/w/index.php?title=IOShttp://en.wikipedia.org/w/index.php?title=No-ophttp://en.wikipedia.org/w/index.php?title=Reference_countinghttp://en.wikipedia.org/w/index.php?title=Objective-C%23Garbage_collectionhttp://en.wikipedia.org/w/index.php?title=Reference_countinghttp://en.wikipedia.org/w/index.php?title=Trademarkhttp://en.wikipedia.org/w/index.php?title=Steve_Jobshttp://en.wikipedia.org/w/index.php?title=Rationalization_%28economics%29
  • 7/31/2019 Cocoa+(API)

    3/6

    Cocoa (API) 3

    Model-view-controller

    The Smalltalk teams at Xerox PARC eventually settled on a design philosophy that led to easy development and

    high code reuse. Known as "model-view-controller" (MVC), the concept breaks an application into three sets of

    interacting object classes.

    Model classes represent raw data, such as documents, settings, files, or objects in memory.

    Views are, as the name implies, visual representations of the data in the model.

    Controller classes contain logic which links the models to their views, and maintains state to keep them

    synchronized.

    Cocoa's design is a strict application of MVC principles. Under OpenStep, most of the classes provided were either

    high-level View classes (in AppKit) or one of a number of relatively low-level model classes like NSString.

    Compared to similar MVC systems, OpenStep lacked a strong model layer. There was no stock class which

    represented a "document," for instance. During the transition to Cocoa, the model layer was expanded greatly,

    introducing a number of pre-rolled classes to provide functionality common to desktop applications.

    In Mac OS X 10.3, Apple introduced the NSController family of classes, which provide predefined behavior for the

    controller layer. These classes are considered part of the Cocoa Bindings system, which also makes extensive use ofprotocols such as Key-Value Observing and Key-Value Binding. The term 'binding' refers to a relationship between

    two objects, often between a view and a controller. Bindings allow the developer to focus more on declarative

    relationships rather than orchestrating fine-grained behavior.

    With the arrival of Mac OS X 10.4, Apple extended this foundation further by introducing the Core Data framework,

    which standardizes change tracking and persistence in the model layer. In effect, the framework greatly simplifies

    the process of making changes to application data, undoing changes (if necessary), saving data to disk, and reading it

    back in.

    By providing framework support for all three MVC layers, Apple's goal is to reduce the amount of boilerplate or

    "glue" code that developers have to write, freeing up resources to spend time on application-specific features.

    Late binding

    In most object-oriented languages, calls to methods are represented physically by a pointer to the code in memory.

    This restricts the design of an application since specific "command handling" classes are required, usually organized

    according to the chain-of-responsibility design pattern. While Cocoa retains this approach for the most part,

    Objective-C's late binding opens up more flexibility.

    Under Objective-C, methods are represented by a selector, a string describing the method to be called. When a

    message is sent, the selector is sent into the ObjC runtime, matched against a list of available methods, and the

    method's implementation is called. Since the selector is text data, this allows it to be saved to a file, transmitted over

    a network or between processes, or manipulated in other ways. The implementation of the method is looked up at

    runtime, not compile time. There is a small performance penalty for this,[3]

    but late binding allows the same selector

    to reference different implementations.

    By a similar token, Cocoa provides a pervasive data manipulation method called key-value coding (KVC).[4]

    This

    permits a piece of data or property of an object to be looked up or changed at runtime by name the property name

    acts as a key to the value itself. In traditional languages, this late binding is not possible. KVC leads to great design

    flexibility an object's type does not need to be known, yet any property of that object can be discovered using

    KVC. In addition, by extending this system using something Cocoa calls Key-Value Observing (KVO), automatic

    support for Undo/Redo is provided.

    Late static binding is a variant of binding somewhere between static and dynamic binding. The binding of names

    before the program is run is called static ("early"); bindings performed as the program runs are dynamic ("late" or

    "virtual").

    http://en.wikipedia.org/w/index.php?title=Name_binding%23Late_statichttp://en.wikipedia.org/w/index.php?title=Chain-of-responsibility_patternhttp://en.wikipedia.org/w/index.php?title=Core_Datahttp://en.wikipedia.org/w/index.php?title=Key-Value_Bindinghttp://en.wikipedia.org/w/index.php?title=Key-Value_Observinghttp://en.wikipedia.org/w/index.php?title=Cocoa_Bindingshttp://en.wikipedia.org/w/index.php?title=Model-view-controllerhttp://en.wikipedia.org/w/index.php?title=Xerox_PARChttp://en.wikipedia.org/w/index.php?title=Smalltalk
  • 7/31/2019 Cocoa+(API)

    4/6

    Cocoa (API) 4

    Rich objects

    One of the most useful features of Cocoa is the powerful "base objects" the system supplies. As an example, consider

    the Foundation classes NSString and NSAttributedString , which provide Unicode strings, and the

    NSText system in AppKit, which allows the programmer to place string objects in the GUI.

    NSText and its related classes are used to display and edit strings. The collection of objects involved permit an

    application to implement anything from a simple single-line text entry field to a complete multi-page, multi-column

    text layout schema, with full professional typography features such as kerning, ligatures, running text around

    arbitrary shapes, rotation, full Unicode support and anti-aliased glyph rendering. Paragraph layout can be controlled

    automatically or by the user, using a built-in "ruler" object that can be attached to any text view. Spell checking is

    automatic, using a single dictionary used by all applications that uses the "squiggly underlining" convention

    introduced by Microsoft (actually a dashed red underline in Cocoa). Unlimited Undo/Redo support is built in. Using

    only the built-in features, one can write a text editor application in as few as 10 lines of code. With new controller

    objects, this may fall to zero. This is in contrast to the TextEdit APIs found in the earlier Mac OS.

    When extensions are needed, Cocoa's use of Objective-C makes this a straightforward task. Objective-C includes the

    concept of "categories[5]

    " which allows for modifications to an existing class "in-place". Functionality can be

    accomplished in a category without any changes to the original classes in the framework, or even access to its

    source. Under more common frameworks this same task would require the programmer to make a new subclass

    supporting the additional features, and then change all instances of the classes to this new class.

    Implementations

    The Cocoa frameworks are written in Objective-C, and hence Objective-C is the preferred language for development

    of Cocoa applications. Java bindings for the Cocoa frameworks (known as the "Java bridge") are also available but

    have not proven popular amongst Cocoa developers. Further, the need for runtime binding means many of Cocoa's

    key features are not available with Java. In 2005, Apple announced that the Java bridge was to be deprecated,

    meaning that features added to Cocoa in Mac OS X versions later than 10.4 would not be added to the Cocoa-Java

    programming interface.

    Originally, Applescript Studio could be used to develop less complex Cocoa applications.[6]

    However, as of Snow

    Leopard, it has been deprecated. It was replaced with ApplescriptObjC, which allows you to program in Applescript,

    while using Cocoa frameworks.[7]

    Third-party bindings available for other languages include Clozure CL, LispWorks, PyObjC (Python), RubyCocoa

    (Ruby), CamelBones (Perl), Cocoa#, Monobjc (C#) and NObjective(C#).[8]

    Nu uses the Objective-C object model

    directly, and therefore can use the Cocoa frameworks without requiring a binding.

    There are also open source implementations of major parts of the Cocoa framework that allows cross-platform

    (including Microsoft Windows) Cocoa application development, such as GNUstep, and Cocotron[9]

    .

    Notes

    [1] http:/ /developer. apple. com/technologies/mac/cocoa. html

    [2] (http://books. google. com/books?id=K8vUkpOXhN4C& pg=PA107& lpg=PA107& dq=mac+ os+NS+prefix& source=bl&

    ots=OJpiSZSuVv&sig=qAdIWxAN8yp1zKSh9npKvslHqqY& hl=en&ei=97F-TNekIZGBsway79SVCQ& sa=X&oi=book_result&

    ct=result&resnum=3& ved=0CBsQ6AEwAjgK#v=onepage& q=mac os NS prefix& f=false) "Cocoa is an important inheritance from NeXT,

    as indicated by .. the "NS" prefix" - Mac OS X internals: a systems approach By Amit Singh, ISBN 0-321-27854-2

    [3] Wikibooks - Some Objective-C advantages (http://en.wikibooks. org/wiki/Programming_Mac_OS_X_with_Cocoa_for_beginners/

    Objective_C,_the_language_and_its_advantages#Some_Objective-C_advantages)

    [4] Key-Value Coding Programming Guide: Introduction (http://developer. apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/)

    [5] http:/

    /

    developer.

    apple.

    com/

    library/

    mac/

    #documentation/

    Cocoa/

    Conceptual/

    ObjectiveC/

    Chapters/

    ocCategories.

    html#/

    /

    apple_ref/doc/uid/TP30001163-CH20-SW1

    http://en.wikibooks.org/wiki/Programming_Mac_OS_X_with_Cocoa_for_beginners/Objective_C,_the_language_and_its_advantages#Some_Objective-C_advantageshttp://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/http://en.wikibooks.org/wiki/Programming_Mac_OS_X_with_Cocoa_for_beginners/Objective_C,_the_language_and_its_advantages#Some_Objective-C_advantageshttp://en.wikibooks.org/wiki/Programming_Mac_OS_X_with_Cocoa_for_beginners/Objective_C,_the_language_and_its_advantages#Some_Objective-C_advantageshttp://books.google.com/books?id=K8vUkpOXhN4C&pg=PA107&lpg=PA107&dq=mac+os+NS+prefix&source=bl&ots=OJpiSZSuVv&sig=qAdIWxAN8yp1zKSh9npKvslHqqY&hl=en&ei=97F-TNekIZGBsway79SVCQ&sa=X&oi=book_result&ct=result&resnum=3&ved=0CBsQ6AEwAjgK#v=onepage&q=mac%20os%20NS%20prefix&f=falsehttp://books.google.com/books?id=K8vUkpOXhN4C&pg=PA107&lpg=PA107&dq=mac+os+NS+prefix&source=bl&ots=OJpiSZSuVv&sig=qAdIWxAN8yp1zKSh9npKvslHqqY&hl=en&ei=97F-TNekIZGBsway79SVCQ&sa=X&oi=book_result&ct=result&resnum=3&ved=0CBsQ6AEwAjgK#v=onepage&q=mac%20os%20NS%20prefix&f=falsehttp://books.google.com/books?id=K8vUkpOXhN4C&pg=PA107&lpg=PA107&dq=mac+os+NS+prefix&source=bl&ots=OJpiSZSuVv&sig=qAdIWxAN8yp1zKSh9npKvslHqqY&hl=en&ei=97F-TNekIZGBsway79SVCQ&sa=X&oi=book_result&ct=result&resnum=3&ved=0CBsQ6AEwAjgK#v=onepage&q=mac%20os%20NS%20prefix&f=falsehttp://developer.apple.com/technologies/mac/cocoa.htmlhttp://www.cocotron.org/http://en.wikipedia.org/w/index.php?title=GNUstephttp://en.wikipedia.org/w/index.php?title=Microsoft_Windowshttp://en.wikipedia.org/w/index.php?title=Objective-Chttp://en.wikipedia.org/w/index.php?title=Nu_%28programming_language%29http://en.wikipedia.org/w/index.php?title=NObjectivehttp://en.wikipedia.org/w/index.php?title=C_Sharp_%28programming_language%29http://en.wikipedia.org/w/index.php?title=Monobjchttp://en.wikipedia.org/w/index.php?title=Cocoa_Sharphttp://en.wikipedia.org/w/index.php?title=Perlhttp://en.wikipedia.org/w/index.php?title=CamelBoneshttp://en.wikipedia.org/w/index.php?title=Ruby_%28programming_language%29http://en.wikipedia.org/w/index.php?title=RubyCocoahttp://en.wikipedia.org/w/index.php?title=Python_%28programming_language%29http://en.wikipedia.org/w/index.php?title=PyObjChttp://en.wikipedia.org/w/index.php?title=LispWorkshttp://en.wikipedia.org/w/index.php?title=Clozure_CLhttp://en.wikipedia.org/w/index.php?title=Language_bindinghttp://en.wikipedia.org/w/index.php?title=Objective-Chttp://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW1http://en.wikipedia.org/w/index.php?title=TextEdit_%28API%29http://en.wikipedia.org/w/index.php?title=Microsofthttp://en.wikipedia.org/w/index.php?title=Rulerhttp://en.wikipedia.org/w/index.php?title=Glyphhttp://en.wikipedia.org/w/index.php?title=Antialiasinghttp://en.wikipedia.org/w/index.php?title=Rotationhttp://en.wikipedia.org/w/index.php?title=Shapehttp://en.wikipedia.org/w/index.php?title=Ligature_%28typography%29http://en.wikipedia.org/w/index.php?title=Kerninghttp://en.wikipedia.org/w/index.php?title=Typographyhttp://en.wikipedia.org/w/index.php?title=String_%28computer_science%29http://en.wikipedia.org/w/index.php?title=Unicode
  • 7/31/2019 Cocoa+(API)

    5/6

    Cocoa (API) 5

    [6] "Applescript Studio Programming Guide (Legacy): About Applescript Studio" (http://developer. apple.com/legacy/mac/library/

    #documentation/AppleScript/Conceptual/StudioBuildingApps/chapter02/studio_about_book. html#//apple_ref/doc/uid/

    20001249-TPXREF101). Apple, Inc.. . Retrieved 5 March 2011.

    [7] "ApplescriptObjC Release Notes" (http://developer. apple. com/library/mac/#releasenotes/ScriptingAutomation/RN-AppleScriptObjC/).

    Apple, Inc.. . Retrieved 5 March 2011.

    [8] more extensive list of implementations (http://osx. hyperjeff. net/Reference/cocoa.php)

    [9] http:/ /www.cocotron.org/

    References

    Aaron Hillegass: Cocoa Programming for Mac OS X, Addison-Wesley, 3rd Edition 2008, Paperback, ISBN

    0-321-50361-9.

    Stephen Kochan: Programming in Objective-C, Sams, 1st Edition 2003, Paperback, ISBN 0-672-32586-1.

    Michael Beam, James Duncan Davidson: Cocoa in a Nutshell, O'Reilly, 1st Edition 2003, Paperback, ISBN

    0-596-00462-1.

    Erick Tejkowski: Cocoa Programming for Dummies, 1st Edition 2003, Paperback, ISBN 0-7645-2613-8.

    Simson Garfinkel, Michael K. Mahoney: Building Cocoa Applications: A Step by Step Guide, O'Reilly, 1st

    Edition 2002, Paperback, ISBN 0-596-00235-1. James Duncan Davidson: Learning Cocoa with Objective-C, O'Reilly, 2nd Edition 2002, Paperback, ISBN

    0-596-00301-3.

    Scott Anguish, Erik M. Buck, Donald A. Yacktman: Cocoa Programming, Sams, 1st Edition 2002, Paperback,

    ISBN 0-672-32230-7.

    Bill Cheeseman: Cocoa Recipes for Mac OS X, Peachpit Press, 1st Edition 2002, Paperback, ISBN

    0-201-87801-1.

    Andrew Duncan: Objective-C Pocket Reference, O'Reilly, 1st Edition 2002, Paperback, ISBN 0-596-00423-0.

    Apple Inc.: Learning Cocoa, O'Reilly, 1st Edition 2001, Paperback, ISBN 0-596-00160-6.

    External links Apple's Cocoa documentation (http://developer.apple.com/documentation/Cocoa/Cocoa.html)

    iDevApps - Cocoa Programming Forum (http://www.idevapps.com)

    Cocoa Dev Central (http://www.cocoadevcentral.com/)

    Cocoa Dev (http://www.cocoadev.com/)

    Cocodao - D/Cocoa bridge for creating Cocoa applications in D language (http://sourceforge.net/projects/

    cocodao/)

    http://sourceforge.net/projects/cocodao/http://sourceforge.net/projects/cocodao/http://www.cocoadev.com/http://www.cocoadevcentral.com/http://www.idevapps.com/http://developer.apple.com/documentation/Cocoa/Cocoa.htmlhttp://en.wikipedia.org/w/index.php?title=Apple_Inc.http://en.wikipedia.org/w/index.php?title=Bill_Cheesemanhttp://en.wikipedia.org/w/index.php?title=Donald_A._Yacktmanhttp://en.wikipedia.org/w/index.php?title=Erik_M._Buckhttp://en.wikipedia.org/w/index.php?title=Scott_Anguishhttp://en.wikipedia.org/w/index.php?title=James_Duncan_Davidsonhttp://en.wikipedia.org/w/index.php?title=Michael_K._Mahoneyhttp://en.wikipedia.org/w/index.php?title=Simson_Garfinkelhttp://en.wikipedia.org/w/index.php?title=Erick_Tejkowskihttp://en.wikipedia.org/w/index.php?title=James_Duncan_Davidsonhttp://en.wikipedia.org/w/index.php?title=Michael_Beamhttp://en.wikipedia.org/w/index.php?title=Stephen_Kochanhttp://en.wikipedia.org/w/index.php?title=Aaron_Hillegasshttp://www.cocotron.org/http://osx.hyperjeff.net/Reference/cocoa.phphttp://developer.apple.com/library/mac/#releasenotes/ScriptingAutomation/RN-AppleScriptObjC/http://developer.apple.com/legacy/mac/library/#documentation/AppleScript/Conceptual/StudioBuildingApps/chapter02/studio_about_book.html%23//apple_ref/doc/uid/20001249-TPXREF101http://developer.apple.com/legacy/mac/library/#documentation/AppleScript/Conceptual/StudioBuildingApps/chapter02/studio_about_book.html%23//apple_ref/doc/uid/20001249-TPXREF101http://developer.apple.com/legacy/mac/library/#documentation/AppleScript/Conceptual/StudioBuildingApps/chapter02/studio_about_book.html%23//apple_ref/doc/uid/20001249-TPXREF101
  • 7/31/2019 Cocoa+(API)

    6/6

    Article Sources and Contributors 6

    Article Sources and ContributorsCocoa (API) Source: http://en.wikipedia.org/w/index.php?oldid=459390338 Contributors: A5b, AdamWeeden, Adammw, Adjusting, Aeluwas, Ahoerstemeier, Airplaneman, AlistairMcMillan,

    Allen Moore, Allotriophagy, Altenmann, Andyluciano, Ant, Bdesham, Boredzo, Brion VIBBER, Camilo Sanchez, CanisRufus, Ccontinanza, Centrx, Chmod007, Collabi, Commander Keane,

    CyberSkull, Damieng, Dave Fried, Davidpk212, Davipo, Dcclark, Deleting Unecessary Words, DerEikopf, Derek Ross, Dipasqualem, Djg2006, Dominus, Dysprosia, Ellmist, Erayjiang,

    FatalError, Flamurai, Frap, GRAHAMUK, Gillean666, Gtrmp, Guy Harris, Gzornenplatz, Hellisp, Heptameron, I80and, Icktoofay, Indy, Innes5, Ino5hiro, Ioakar, Isfisk, Jandalhandler,

    Jason.grossman, Jerome Charles Potts, Jerryobject, Jharrell, Jmah, Johndbeatty, Jona, Jordandanford, Joswig, Julesd, KKong, KnightRider, Koffer, Koyaanis Qatsi, Kusunose, Kzhr, Letiemble,

    Little Professor, Lostchicken, MFNickster, Macbookair3140, Macduff, Manuelzz, Maury Markowitz, Max613, Maximile, Mdd, Mikeblas, Mikeferrier, Mipadi, Moanzhu, Moreati, Naddy, Nick

    carson, Nicolas1981, Nihiltres, Nixdorf, Nono64, Optikos, Orderud, PEHowland, PIrish, Pauli133, Philwelch, PierreAbbat, Plausible deniability, Plop, Pnm, Projanen, RTC, RadRafe,RainbowCrane, RedWolf, Robballan, Sakurambo, ScottyH, Seffer, Sekelsenmat, Shawn81, Snarius, Spikey, Sstevenson, Stevenmattern, Stevenrasnick, Streambyte, Sverdrup, Tanadeau, TcKnd,

    Tenbaset, The Anome, Thekmc, Theonlykiel, Theunixgeek, Thumperward, Tokek, Tomkrz, Tophu, Toussaint, Uliwitness, Uppfinnarn, Vocaro, Warren, Whistler, Wik, Wiretse, Wootery, Wxop,

    ZacBowling, Zenzee,, 211 anonymous edits

    License

    Creative Commons Attribution-Share Alike 3.0 Unported//creativecommons.org/licenses/by-sa/3.0/