README
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:4k
源码类别:

信息检索与抽取

开发平台:

Unix_Linux

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