Table of Contents Previous Section

Scripted Classes

You can create an Objective-C class in a script file, then load that class into your application at run time and generate instances from it. The instances will behave as any other Objective-C object.

As with categories, no typing is permitted. You must specify the class interface in an @interface...@end block and the class implementation in an @implementation...@end block. For the sake of loading, the scripted class code should be in its own ".wos" file. The following example is in a file named Surfshop.wos:

@interface Surfshop:NSObject {
id name;
id employees;
}
@end
@implementation Surfshop
- initWithName:aName employees:theEmployees {
    name = [aName copy];
    employees = [theEmployees retain];
    return self;
}
@end

To use the class, you locate it in the application, load it, and then allocate and initialize instances using the class object. For example:

id allSurfshops;
- init
{
    id scriptPath;
    id surfshopClass;
    [super init];
    scriptPath = [WOApp pathForResourceNamed:@"Surfshop" ofType:@"wos"];
    surfshopClass = [WOApp scriptedClassWithPath:scriptPath];
    allSurfshops = [NSMutableArray array];
    [allSurfshops addObject:[[[surfshopClass alloc] initWithName: 
        "Banana Surfshop" employees:@("John Popp", "Jenna de Rosnay")] autorelease]];
    [allSurfshops addObject:[[[surfshopClass alloc] initWithName: 
        "Rad Swell" employees:@("Robby Naish", "Nathalie Simon")] autorelease]];
    return self;
}

Table of Contents Next Section