Objective-C Mapping for Local Interface
On this page:
Mapped Objective-C Protocol
A Slice local interface is mapped to an Objective-C protocol with the same name, for example:
Slice
["objc:prefix:ICE"]
module Ice
{
local interface Communicator
{
...
}
}
is mapped to the Objective-C protocol ICECommunicator:
Objective-C
@protocol ICECommunicator <NSObject> ... @end
The delegate metadata allows you to map a local interface with a single operation to an Objective-C block. For example:
Slice
["objc:prefix:ICE"]
module Ice
{
["delegate"] local interface ValueFactory
{
Value create(string type);
}
}
is mapped to:
Objective-C
typedef ICEObject* (^ICEValueFactory)(NSString*);
LocalObject in Objective-C
All Slice local interfaces implicitly derive from LocalObject, which is mapped to ICELocalObject in Objective-C:
Objective-C
@interface ICELocalObject : NSObject
{
// internal member
}
@end
Mapping for Local Interface Inheritance in Objective-C
Inheritance of local Slice interfaces is mapped to protocol inheritance in Objective-C. For example:
Slice
module M
{
local interface A {}
local interface B extends A {}
local interface C extends A {}
local interface D extends B, C {}
}
is mapped to:
Objective-C
@protocol MA <NSObject> @end @protocol MB <MA> @end @protocol MC <MA> @end @protocol MD <MB, MC> @end