|
|
1.1 root 1:
1.1.1.3 root 2: GNU Objective C notes
3: *********************
1.1.1.2 root 4:
1.1.1.3 root 5: This document is to explain what has been done, and a little about how
6: specific features differ from other implementations. The runtime has
7: been completely rewritten in gcc 2.4. The earlier runtime had several
1.1 root 8: severe bugs and was rather incomplete. The compiler has had several
9: new features added as well.
10:
11: This is not documentation for Objective C, it is usable to someone
12: who knows Objective C from somewhere else.
13:
14:
15: Runtime API functions
16: =====================
17:
1.1.1.4 ! root 18: The runtime is modeled after the NeXT Objective C runtime. That is,
! 19: most functions have semantics as it is known from the NeXT. The
1.1 root 20: names, however, have changed. All runtime API functions have names
21: of lowercase letters and and underscores as opposed to the
22: `traditional' mixed case names.
23: The runtime api functions are not documented as of now.
24: Someone offered to write it, and did it, but we were not allowed to
25: use it by his university (Very sad story). We have started writing
1.1.1.4 ! root 26: the documentation over again. This will be announced in appropriate
! 27: places when it becomes available.
1.1 root 28:
29:
30: Protocols
31: =========
32:
1.1.1.4 ! root 33: Protocols are now fully supported. The semantics is exactly as on the
1.1 root 34: NeXT. There is a flag to specify how protocols should be typechecked
35: when adopted to classes. The normal typechecker requires that all
36: methods in a given protocol must be implemented in the class that
37: adopts it -- it is not enough to inherit them. The flag
38: `-Wno-protocol' causes it to allow inherited methods, while
39: `-Wprotocols' is the default which requires them defined.
40:
41:
42: +initialize
43: ===========
44:
45: This method, if defined, is called before any other instance or class
46: methods of that particular class. This method is not inherited, and
47: is thus not called as initializer for a subclass that doesn't define
48: it itself. Thus, each +initialize method is called exactly once (or
49: never if no methods of that particular class is never called).
50: Besides this, it is allowed to have several +initialize methods, one
51: for each category. The order in which these (multiple methods) are
52: called is not well defined. I am not completely certain what the
1.1.1.4 ! root 53: semantics of this method is for other implementations, but this is
1.1 root 54: how it works for GNU Objective C.
55:
56:
57: Passivation/Activation/Typedstreams
58: ===================================
59:
60: This is supported in the style of NeXT TypedStream's. Consult the
61: headerfile Typedstreams.h for api functions. I (Kresten) have
62: rewritten it in Objective C, but this implementation is not part of
63: 2.4, it is available from the GNU Objective C prerelease archive.
1.1.1.3 root 64: There is one difference worth noting concerning objects stored with
65: objc_write_object_reference (aka NXWriteObjectReference). When these
66: are read back in, their object is not guaranteed to be available until
67: the `-awake' method is called in the object that requests that object.
68: To objc_read_object you must pass a pointer to an id, which is valid
69: after exit from the function calling it (like e.g. an instance
70: variable). In general, you should not use objects read in until the
71: -awake method is called.
1.1 root 72:
73:
74: Acknowledgements
75: ================
76:
77: The GNU Objective C team: Geoffrey Knauth <[email protected]> (manager),
78: Tom Wood <[email protected]> (compiler) and Kresten Krab Thorup
79: <[email protected]> (runtime) would like to thank a some people for
80: participating in the development of the present GNU Objective C.
81:
82: Paul Burchard <[email protected]> and Andrew McCallum
83: <[email protected]> has been very helpful debugging the
84: runtime. Eric Herring <[email protected]> has been very helpful
85: cleaning up after the documentation-copyright disaster and is now
86: helping with the new documentation.
87:
88: Steve Naroff <[email protected]> and Richard Stallman
89: <[email protected]> has been very helpful with implementation details
90: in the compiler.
91:
92:
93: Bug Reports
94: ===========
95:
96: Please read the section `Submitting Bugreports' of the gcc manual
97: before you submit any bugs.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.