50 lines
1 KiB
Text
50 lines
1 KiB
Text
|
title::initClass
|
||
|
categories::Core>Kernel, Language>OOP
|
||
|
summary:: Class initialization
|
||
|
related:: Classes/Class
|
||
|
|
||
|
method:: initClass
|
||
|
|
||
|
When SuperCollider starts up, just after it has compiled the library, it initializes all the classes from Object down, a depth first traversal of subclasses.
|
||
|
|
||
|
In this method, any class that requires it may initialize classvars or other resources.
|
||
|
|
||
|
method:: initClassTree
|
||
|
|
||
|
In some cases you will require another class to be initialized before you can initialize your own. You may depend on its resources (a classvar). This can be accomplished by:
|
||
|
|
||
|
code::
|
||
|
YourClass {
|
||
|
*initClass {
|
||
|
Class.initClassTree(OtherClass);
|
||
|
|
||
|
..
|
||
|
|
||
|
//
|
||
|
|
||
|
..
|
||
|
}
|
||
|
|
||
|
..
|
||
|
|
||
|
}
|
||
|
::
|
||
|
|
||
|
Each class will be initialized once, and the OtherClass will have all of its subclasses initialized before the method returns.
|
||
|
|
||
|
For those methods that need pre-initialized data (such as path names) should defer this function by using StartUp:
|
||
|
|
||
|
code::
|
||
|
YourClass {
|
||
|
*initClass {
|
||
|
StartUp.add {
|
||
|
..
|
||
|
}
|
||
|
}
|
||
|
|
||
|
..
|
||
|
|
||
|
}
|
||
|
::
|
||
|
|