On this page:
5.16.1 Strings
_  NSString
5.16.2 Allocation Pools

5.16 Cocoa Foundation

The ffi/unsafe/nsalloc and ffi/unsafe/nsstring libraries provide basic facilities for working with Cocoa and/or Mac OS Foundation libraries (usually along with ffi/objc).

5.16.1 Strings

 (require ffi/unsafe/nsstring) package: base


_NSString : ctype?

A type that converts between Racket strings and NSString* (a.k.a. CFStringRef) values. That is, use _NSString as a type for a foreign-function NSString* argument or result.

The _NSString conversion keeps a weak mapping from Racket strings to converted strings, so that converting the same string (in the equal? sense) multiple times may avoid allocating multiple NSString objects.

5.16.2 Allocation Pools

Calling any Foundation API that allocates requires an NSAutoreleasePool installed. The ffi/unsafe/nsalloc library provides a function and shorthand syntactic form for setting up such a context. (The _NSString type creates an autorelease pool implicitly while converting from/to a Racket string, however.)


(call-with-autorelease thunk)  any

  thunk : (-> any)
Calls thunk in atomic mode and with a fresh NSAutoreleasePool that is released after thunk returns.


(with-autorelease expr)

A shorthand for (call-with-autorelease (lambda () expr)).