Objective C Bridge User Guide

Similar documents
Objective-C and Cocoa User Guide and Reference Manual. Version 5.0

Java Interview Questions and Answers

Common Lisp ObjectiveC Interface

The C Programming Language course syllabus associate level

Habanero Extreme Scale Software Research Project

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011

1 Abstract Data Types Information Hiding

Creating a Custom Class in Xcode

iphone Objective-C Exercises

iphone SDK Enrolled students will be invited to developer program Login to Program Portal Request a Certificate Download and install the SDK

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

Object Oriented Programming and the Objective-C Programming Language 1.0. (Retired Document)

El Dorado Union High School District Educational Services

C++ INTERVIEW QUESTIONS

Sources: On the Web: Slides will be available on:

Introduction to Objective-C. Kevin Cathey

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Crash Course in Java

Glossary of Object Oriented Terms

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

ios Dev Crib Sheet In the Shadow of C

Java (12 Weeks) Introduction to Java Programming Language

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding

CS 111 Classes I 1. Software Organization View to this point:

Key-Value Coding Programming Guide

AP Computer Science Java Subset

Implementation Aspects of OO-Languages

University of Twente. A simulation of the Java Virtual Machine using graph grammars

Java Application Developer Certificate Program Competencies

MPLAB Harmony System Service Libraries Help

Introduction to Java

Lecture 5: Java Fundamentals III

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)

Java CPD (I) Frans Coenen Department of Computer Science

Chapter 5 Names, Bindings, Type Checking, and Scopes

ios Development Tutorial Nikhil Yadav CSE 40816/60816: Pervasive Health 09/09/2011

The programming language C. sws1 1

PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON

C++ Programming Language

How To Write Portable Programs In C

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

Visual Basic Programming. An Introduction

CS506 Web Design and Development Solved Online Quiz No. 01

Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)

MatrixSSL Developer s Guide

C Programming Review & Productivity Tools

Pemrograman Dasar. Basic Elements Of Java

CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

The Cool Reference Manual

Objective-C Tutorial

Objective C and iphone App

Semantic Analysis: Types and Type Checking

ODBC Client Driver Help Kepware, Inc.

Xcode Project Management Guide. (Legacy)

Problem 1. CS 61b Summer 2005 Homework #2 Due July 5th at the beginning of class

Classes and Objects in Java Constructors. In creating objects of the type Fraction, we have used statements similar to the following:

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

VHDL Test Bench Tutorial

Variable Base Interface

Project 1: Implement a simple hosts framework using UNIX TCP Sockets to demonstrate the concept of Mobile Agents

Python, C++ and SWIG

8 Tutorial: Using ASN.1

Contents. About Testing with Xcode 4. Quick Start 7. Testing Basics 23. Writing Test Classes and Methods 28. At a Glance 5 Prerequisites 6 See Also 6

PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?

Getting Started with the Internet Communications Engine

Install Java Development Kit (JDK) 1.8

Stack Allocation. Run-Time Data Structures. Static Structures

Fundamentals of Java Programming

Object Oriented Software Design II

Tutorial on C Language Programming

Part I. Multiple Choice Questions (2 points each):

Java Programming Fundamentals

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

J a v a Quiz (Unit 3, Test 0 Practice)

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

To Java SE 8, and Beyond (Plan B)

Lesson 4 Web Service Interface Definition (Part I)

Applying Clang Static Analyzer to Linux Kernel

sys socketcall: Network systems calls on Linux

CS 106 Introduction to Computer Science I

JavaCard. Java Card - old vs new

Informatica e Sistemi in Tempo Reale

MA-WA1920: Enterprise iphone and ipad Programming

This documentation is made available before final release and is subject to change without notice and comes with no warranty express or implied.

13. Publishing Component Information to Embedded Software

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

How To Write A Program In Java (Programming) On A Microsoft Macbook Or Ipad (For Pc) Or Ipa (For Mac) (For Microsoft) (Programmer) (Or Mac) Or Macbook (For

Description of Class Mutation Mutation Operators for Java

OpenCL Static C++ Kernel Language Extension

Introduction to Distributed Computing using CORBA

public static void main(string[] args) { System.out.println("hello, world"); } }

Software Engineering Techniques

High-Level Language. Building a Modern Computer From First Principles.

Concrete uses of XML in software development and data analysis.

Transcription:

Objective C Bridge User Guide Release 1.0 Dylan Hackers April 20, 2016

CONTENTS 1 Quick Usage 3 2 Design 5 2.1 Type Safety................................................ 5 2.2 Performance............................................... 5 3 Limitations 7 3.1 Memory Management.......................................... 7 3.2 Not Yet Supported............................................ 7 3.3 Unsupported............................................... 7 4 Naming Scheme 9 5 Type Encoding 11 6 The OBJECTIVE-C module 13 6.1 Macros.................................................. 13 6.2 Classes.................................................. 18 6.3 Instances................................................. 19 6.4 Methods................................................. 20 6.5 Selectors................................................. 21 6.6 Associated Objects............................................ 21 6.7 Protocols................................................. 22 6.8 Core Foundation Bindings........................................ 23 API Index 25 Index 27 i

ii

The Objective C / Dylan bridge is designed to work with the modern Objective C 2.0 run-time as found on recent versions of Mac OS X and ios. The bridge library itself can be found at https://github.com/dylan-foundry/objc-dylan/. A pre-release version of Open Dylan 2014.1 is currently required as the compiler has been extended to support this library. Quick Usage Design Type Safety Performance Limitations Memory Management Not Yet Supported Unsupported Naming Scheme Type Encoding The OBJECTIVE-C module Macros Classes Instances Methods Selectors Associated Objects Protocols Core Foundation Bindings CONTENTS 1

2 CONTENTS

CHAPTER ONE QUICK USAGE Objective C selectors (method definitions can be described using the objc-selector-definer macro. Messages can be sent to Objective C classes and instances using the send macro. This demonstrates the definition of 3 standard selectors and how to invoke them: define objc-selector @alloc parameter target :: <objc/class>; result objc-instance :: <objc/instance>; selector: "alloc"; define objc-selector @init parameter target :: <objc/instance>; result objc-instance :: <objc/instance>; selector: "init"; define objc-selector @retain-count parameter target :: <objc/instance>; result retain-count :: <C-int>; selector: "retaincount"; begin let inst = send(send($nsobject, @alloc), @init); let count = send(inst, @retain-count); New subclasses of Objective C classes can be created from Dylan and methods added to them: define objc-method finished-launching (self, cmd, notification :: <NSNotification>) => () c-signature: (self :: <MyDelegate>, cmd :: <objc/selector>, notification :: <NSNotification>) => () format-out("application has launched.\n"); define objc-class <MyDelegate> (<NSObject>) => MyDelegate bind @applicationdidfinishlaunching/ => finished-launching; See objc-class-definer and objc-method-definer for more details. 3

4 Chapter 1. Quick Usage

CHAPTER TWO DESIGN 2.1 Type Safety This bridge library provides a type-safe mechanism for accessing Objective C libraries. A library binding must set up a hierarchy of Dylan classes that mirror the Objective C class hierarchy using the objc-shadow-class-definer macro. When used correctly, instances of Objective C classes should be able to correctly participate in Dylan s method dispatch mechanisms. To help make this more clear, in Objective C, NSNumber is a subclass of NSValue. In Dylan, we represent this relationship: define objc-shadow-class <ns/value> (<ns/object>, <<ns/copying>>, <<ns/secure-coding>>) => NSValue; define objc-shadow-class <ns/number> (<ns/value>) => NSNumber; Now, instances of NSNumber will appear to be of type <ns/number> and instances of NSValue would be of type <ns/value>. This allows method definitions such as these to work: define method print-object (value :: <ns/value>, stream :: <stream>)... define method print-object (number :: <ns/number>, stream :: <stream>)... 2.2 Performance Attempts have been made to keep the overhead from using the bridge to a minimum. Most Dylan method dispatch has been eliminated (with the exception of objc/make-instance), and inlining has been used as needed to further reduce overhead. 5

6 Chapter 2. Design

CHAPTER THREE LIMITATIONS 3.1 Memory Management A design is not yet in place for simplifying Objective C memory management or integrating it with the Dylan garbage collection. This will be provided in a future version of this library. 3.2 Not Yet Supported We do not yet support these features of the Objective C run-time: Doing much of anything with <objc/method>. Protocol introspection or representing Objective C protocols on the Dylan side. Properties of classes or instances. Access to instance variables. Patches are welcome. Details about many of these things can be found in /usr/include/objc/runtime.h. 3.3 Unsupported Functions available in earlier versions of the Objective C run-time that have been deprecated or removed are not supported. The GNU Objective C run-time is also not supported. 7

8 Chapter 3. Limitations

CHAPTER FOUR NAMING SCHEME Selectors are commonly named with a prefix of @ such as @alloc, @description. Colons within a selector name can be converted to / as in @perform-selector/with-object/. That example also demonstrates the conversion of the changes in case to the more Dylan-like use of hyphenated names. Shadow classes are named in typical Dylan fashion with the name of the Objective C class wrapped in <...>: <NSObject>, NSApplication. The actual underlying Objective C class is available as a constant: $NSObject, $NSApplication. Protocols are commonly named with double << and >> as with <<NSObject>> to distinguish them from a regular class or shadow class. 9

10 Chapter 4. Naming Scheme

CHAPTER FIVE TYPE ENCODING The types correspond to the Dylan C-FFI types as follows: Type Enc <objc/instance> @ <objc/class> # <objc/selector> : <C-character> c <C-unsigned-char> C <C-short> s <C-unsigned-short> S <C-int> i <C-unsigned-int> I <C-long> l <C-unsigned-long> L <C-float> f <C-double> d <C-boolean> B <C-void> v poiniter to ^ <C-string> * 11

12 Chapter 5. Type Encoding

CHAPTER SIX THE OBJECTIVE-C MODULE 6.1 Macros send Macro Sends an Objective C message to a target. Macro Call send(*target*, *selector*, *args*) Discussion The selector must be the binding name that refers to the Objective C selector as the name given here is used literrally to construct a function call. Example This example: let inst = send($nsobject, @alloc); expands to: let inst = %send-@alloc($nsobject); objc-class-definer Macro Defines a new Objective C class, creates the corresponding shadow class, and allows binding method implementations to the class. Macro Call define objc-class *class-name* (*superclass*) => *objective-c-name* bind *selector* => *objc-method*;... class-name the name of the Dylan shadow class. superclass the names of the Dylan shadow superclass. objective-c-name the name of the Objective C class being created. selector The selector to be bound to a method implementation. objc-method The method defined via objc-method-definer. 13

Discussion Defines a new Objective C class and the corresponding Dylan shadow class. The new class can only have a single super-class (named by superclass). Protocol support will be added in the future. Methods may be bound to the new Objective C class using the bind syntax: bind *selector* to *objc-method* (*type-encoding*); Example define objc-selector @adder parameter target :: <ns/object>; parameter a :: <C-int>; result r :: <C-int>; selector: "adder:"; define objc-method adder (self, selector, a :: <integer>) => (r :: <integer>) c-signature: (self :: <objc/instance>, selector :: <objc/selector>, a :: <C-int>) => (r :: <C-int>); assert-true(instance?(self, <test-class>)); a + 1 define objc-class <test-class> (<ns/object>) => DylanTestClass bind @adder => adder; objc-method-definer Macro Defines a function in Dylan and the associated information needed to invoke it from Objective C. Macro Call define objc-method *name* (*args*) => (*result*) c-signature: (*cffi-args*) => (*cffi-result*); *body* Discussion name The name of the method. args A typical parameter list for a method. result A typical result definition. If no result, then just (). cffi-args A typical parameter list for a method, but all parameters must have a C-FFI type associated with them. cffi-result A typical result defintion, but the type must be one of the C-FFI types. If no result, then just (). body The body of the method. Defines a function in Dylan and the associated information needed to invoke it from Objective C. This is used in combination with objc-class-definer to add methods to an Objective C class. 14 Chapter 6. The OBJECTIVE-C module

Example define objc-method finished-launching (self, cmd, notification :: <NSNotification>) => () c-signature: (self :: <MyDelegate>, cmd :: <objc/selector>, notification :: <NSNotification>) => () format-out("application has launched.\n"); objc-protocol-definer Macro Macro Call define objc-protocol *protocol-name*; Discussion Note: This will change in the near future when we introduce improved support for Objective C protocols. Example define objc-protocol <<ns/copying>>; This currently expands to: define abstract class <<ns-copying>> (<object>) objc-selector-definer Defining Macro Describe Objective C selectors to the c-ffi. Macro Call define objc-selector *name* [*parameter-spec*;...] [*result-spec*;] [*function-option*,...;] end [C-function] [*name*] Discussion name A Dylan variable name. parameter-spec result-spec function-option A property list. Describes an Objective C selector to the C-FFI. In order for a selector to be invoked correctly by Dylan, the same information about the selector must be given as is needed by C callers, including the selector s name and the types of its parameters and results. The result of processing a define objc-selector definition is a Dylan function and a constant bound to name. This function takes Dylan objects as arguments, converting them to their C representations according to the types declared for the parameters of the C function 6.1. Macros 15

before invoking the selector with them. If the corresponding Objective C method returns results, these results are converted to Dylan representations according to the declared types of those results before being returned to the Dylan caller of the function. By default the function created is a raw function, not a generic function. A generic function method can defined by using the generic-function-method: option. The selector: function option must be supplied with a constant string value for the name of the selector. There must be at least one parameter specification. The first parameter specifies the target of the method, so it should be either an Objective C class or an object instance. A parameter-spec has the following syntax: [*adjectives*] parameter name :: *c-type* #key *c-name* If only the target parameter is specified, the selector is taken to have no arguments. The adjectives can be either output, input, or both. The calling discipline is specified by the input and output adjectives. By itself, input indicates that the argument is passed into the function by value. This option is the default and is used primarily to document the code. There is a parameter to the generated Dylan function corresponding to each input parameter of the C function. The output adjective specifies that the argument value to the C function is used to identify a location into which an extra result of the C function will be stored. There is no parameter in the generated Dylan function corresponding to an output parameter of the C function. The C-FFI generates a location for the extra return value itself and passes it to the C function. When the C function returns, the value in the location is accessed and returned as an extra result from the Dylan function. The C-FFI allocates space for the output parameter s referenced type, passes a pointer to the allocated space, and returns pointer-value of that pointer. A struct or union type may not be used as an output parameter. If both input and output are supplied, they specify that the argument value to the C function is used to identify a location from which a value is accessed and into which an extra result value is placed by the C function. There is a parameter to the generated Dylan function corresponding to each input output parameter of the C function that is specialized as the union of the export type of the referenced type of the type given for the parameter in define c-function, and #f. When the C function returns, the value in the location is accessed and returned as an extra result from the Dylan function. If an input output parameter is passed as #f from Dylan then a NULL pointer is passed to the C function, and the extra value returned by the Dylan function will be #f. Note that neither output nor input output affects the declared type of an argument: it must have the same type it has in C and so, because it represents a location, must be a pointer type. A result-spec has the following syntax: result [name :: c-type] If no result is specified, the Dylan function does not return a value for the C result, and the C function is expected to have a return type of void. Each function-option is a keyword value pair. The generic-function-method: option may be either #t or #f, indicating whether to add a method to the generic function name or to bind a bare constant method directly to name. The default value for generic-function-method: is #f. 16 Chapter 6. The OBJECTIVE-C module

The option C-modifiers: can be used to specify alternate versions of objc_msgsend to use. For example, if a selector needs to be sent using objc_msgsend_fpret, then you would use C-modifiers: "_fpret". In effect, a define objc-selector such as: define objc-selector @alloc parameter objc-class :: <objc/class>; result instance :: <objc/instance>; c-name: "alloc"; expands into something like: define constant @alloc = objc/register-selector("alloc", "@#:"); define function %send-@alloc (target) let c-target = %as-c-representation(<objc/class>, target); let c-selector = %as-c-representation(<objc/selector, @alloc); let c-result = %objc-msgsend(c-target, c-selector); %as-dylan-representation(<objc/instance>, c-result) with the declared type. Example define objc-selector @alloc parameter target :: <objc/class>; result objc-instance :: <objc/instance>; selector: "alloc"; objc-shadow-class-definer Macro Macro Call define objc-shadow-class *class-name* (*superclasses*) => *objective-c-class*; class-name the name of the dylan shadow class. superclasses the names of the dylan shadow superclasses and protocols. objective-c-class the name of the objective c class being shadowed. Discussion The shadow class hierarchy is an important part of how we enable a type-safe binding to an Objective C library. Example define objc-shadow-class <ns/value> (<ns/object>, <<ns/copying>>, <<ns/secure-coding>>) => NSValue; define objc-shadow-class <ns/number> (<ns/value>) => NSNumber; The definition of <ns/number> would expand to a couple of important definitions: 6.1. Macros 17

define constant $NSNumber = objc/get-class("nsnumber"); define class <ns/number> (<ns/value>) inherited slot instance-objc-class, init-value: $NSNumber; objc/register-shadow-class($nsnumber, <ns/number>); We can see that the important elements are: The constant, $NSNumber, that represents the Objective C class. The shadow class, <ns/number>. The shadow class is registered so that objc/make-instance can work. 6.2 Classes <objc/class> Class The Dylan representation of an Objective C class object. Superclasses <c-statically-typed-pointer> Discussion This class is not meant to be inherited from. To represent an instance of an Objective C class, a subclass of <objc/instance> as created by a hierarchy of objc-shadow-class-definer calls would be used. Messages may be sent to Objective C classes using instances of this class. objc/class-name Function Returns the name of an Objective C class. Signature objc/class-name (objc-class) => (objc-class-name) objc-class An instance of <objc/class>. objc-class-name An instance of <string>. objc/super-class Function Returns the superclass of an Objective C class. Signature objc/super-class (objc-class) => (objc-super-class?) objc-class An instance of <objc/class>. objc-super-class? An instance of false-or(<objc/class>). objc/class-responds-to-selector? Function Returns whether or not an Objective C class responds to the given selector. Signature objc/class-responds-to-selector? (objc-class selector) => (well?) objc-class An instance of <objc/class>. 18 Chapter 6. The OBJECTIVE-C module

selector An instance of <objc/selector>. well? An instance of <boolean>. objc/get-class Function Looks up an Objective C class, given its name. Signature objc/get-class (name) => (objc-class) name An instance of <string>. objc-class An instance of false-or(<objc/class>). objc/get-class-method Function Signature objc/get-class-method (objc-class selector) => (method?) objc-class An instance of <objc/class>. selector An instance of <objc/selector>. method? An instance of false-or(<objc/method>). objc/get-instance-method Function Signature objc/get-instance-method (objc-class selector) => (method?) objc-class An instance of <objc/class>. selector An instance of <objc/selector>. method? An instance of false-or(<objc/method>). 6.3 Instances <objc/instance> Abstract Class Represents an instance of an Objective C class. $nil Constant Superclasses <c-statically-typed-pointer> Discussion Direct instances of this class are not used. Instead, use instances of subclasses created with objc-shadow-class-definer. When this class is used as the result type for a selector, the value will be mapped back into the correct instance of a subclass of <objc/instance>. This requires that the actual class has been correctly set up as a shadow class or an error will be signaled. objc/instance-class Function 6.3. Instances 19

Signature objc/instance-class (objc-instance) => (objc-class) objc-instance An instance of <objc/instance>. objc-class An instance of <objc/class>. objc/instance-class-name Function Signature objc/instance-class-name (objc-instance) => (objc-class-name) objc-instance An instance of <objc/instance>. objc-class-name An instance of <string>. objc/instance-size Function Signature objc/instance-size (objc-class) => (objc-instance-size) objc-class An instance of <objc/class>. objc-instance-size An instance of <integer>. objc/make-instance Function Signature objc/make-instance (raw-instance) => (objc-instance) raw-instance An instance of <machine-word>. objc-instance An instance of <objc/instance>. 6.4 Methods <objc/method> Class Represents an Objective C method object. Superclasses <c-statically-typed-pointer> objc/method-name Function Signature objc/method-name (objc-method) => (objc-method-selector) objc-method An instance of <objc/method>. objc-method-selector An instance of <objc/selector>. 20 Chapter 6. The OBJECTIVE-C module

6.5 Selectors <objc/selector> Class Represents an Objective C selector. Superclasses <c-statically-typed-pointer> objc/register-selector Function Returns an <objc/selector> for the given selector name. Signature objc/register-selector (name, type-encoding) => (objc-selector) Discussion name An instance of <string>. type-encoding An instance of <string>. objc-selector An instance of <objc/selector>. This will not usually be called in user code. objc-selector-definer. See Type Encoding for more details on the type-encoding parameter. objc/selector-name Function Returns the name of the given selector. Signature objc/selector-name (objc-selector) => (selector-name) objc-selector An instance of <objc/selector>. selector-name An instance of <string>. Instead, the selector is usually defined using 6.6 Associated Objects objc/associated-object Generic function Signature objc/associated-object (objc-instance key) => (objc-instance) objc-instance An instance of <objc/instance>. key An instance of either a <string> or a <symbol>. objc-instance An instance of <objc/instance>. objc/remove-associated-objects Function Signature objc/remove-associated-objects (objc-instance) => () objc-instance An instance of <objc/instance>. 6.5. Selectors 21

$objc-association-assign Constant $objc-association-copy Constant $objc-association-copy-nonatomic Constant $objc-association-retain-nonatomic Constant $objc-association-return Constant objc/set-associated-object Generic function Signature objc/set-associated-object (objc-instance key value association-policy) => () objc-instance An instance of <objc/instance>. key An instance of either a <string> or a <symbol>. value An instance of <objc/instance>. association-policy An instance of <integer>. 6.7 Protocols <objc/protocol> Class Represents an Objective C protocol. Superclasses <C-statically-typed-pointer> objc/get-protocol Function Looks up an Objective C protocol, given its name. Signature objc/get-protocol (name) => (objc-protocol) name An instance of <string>. objc-protocol An instance of false-or(<objc/protocol>). objc/protocol-name Function Signature objc/protocol-name (objc-protocol) => (objc-protocol-name) objc-protocol An instance of <objc/protocol>. objc-protocol-name An instance of <string>. objc/conforms-to-protocol? Generic function Signature objc/conforms-to-protocol? (object) => (conforms?) object An instance of <objc/class> or <objc/protocol>. conforms? An instance of <boolean>. 22 Chapter 6. The OBJECTIVE-C module

6.8 Core Foundation Bindings <<ns/object>> Abstract Class Superclasses <object> <ns/object> Class Superclasses <objc/instance>, <<ns/object>> 6.8. Core Foundation Bindings 23

24 Chapter 6. The OBJECTIVE-C module

API INDEX N $nil (constant), 19 <<ns/object>> (class), 23 <ns/object> (class), 23 O $objc-association-assign (constant), 21 $objc-association-copy (constant), 22 $objc-association-copy-nonatomic (constant), 22 $objc-association-retain-nonatomic (constant), 22 $objc-association-return (constant), 22 <objc/class> (class), 18 <objc/instance> (class), 19 <objc/method> (class), 20 <objc/protocol> (class), 22 <objc/selector> (class), 21 objc-class-definer (macro), 13 objc-method-definer (macro), 14 objc-protocol-definer (macro), 15 objc-selector-definer (macro), 15 objc-shadow-class-definer (macro), 17 objc/associated-object (generic function), 21 objc/class-name (function), 18 objc/class-responds-to-selector? (function), 18 objc/conforms-to-protocol? (generic function), 22 objc/get-class (function), 19 objc/get-class-method (function), 19 objc/get-instance-method (function), 19 objc/get-protocol (function), 22 objc/instance-class (function), 19 objc/instance-class-name (function), 20 objc/instance-size (function), 20 objc/make-instance (function), 20 objc/method-name (function), 20 objc/protocol-name (function), 22 objc/register-selector (function), 21 objc/remove-associated-objects (function), 21 objc/selector-name (function), 21 objc/set-associated-object (generic function), 22 objc/super-class (function), 18 S send (macro), 13 25

26 API Index

INDEX Symbols $nil, 19 $objc-association-assign, 21 $objc-association-copy, 22 $objc-association-copy-nonatomic, 22 $objc-association-retain-nonatomic, 22 $objc-association-return, 22 <<ns/object>>, 23 <ns/object>, 23 <objc/class>, 18 <objc/instance>, 19 <objc/method>, 20 <objc/protocol>, 22 <objc/selector>, 21 S send, 13 O objc-class-definer, 13 objc-method-definer, 14 objc-protocol-definer, 15 objc-selector-definer, 15 objc-shadow-class-definer, 17 objc/associated-object, 21 objc/class-name, 18 objc/class-responds-to-selector?, 18 objc/conforms-to-protocol?, 22 objc/get-class, 19 objc/get-class-method, 19 objc/get-instance-method, 19 objc/get-protocol, 22 objc/instance-class, 19 objc/instance-class-name, 20 objc/instance-size, 20 objc/make-instance, 20 objc/method-name, 20 objc/protocol-name, 22 objc/register-selector, 21 objc/remove-associated-objects, 21 objc/selector-name, 21 objc/set-associated-object, 22 objc/super-class, 18 27