summaryrefslogtreecommitdiff
path: root/Lisp/parameters.lisp
blob: e9e30579c7ffc85a55ad36b262b2dbd4dc197f97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
(in-package #:mulk.objective-cl)


(defvar *skip-finalization*  nil)
(defvar *skip-retaining*     nil)

(defvar *trace-method-calls* nil
  "Whether to print trace messages of all Objective C method calls.

## Value Type:

a **generalized boolean**.


## Initial Value:

__nil__.


## Description:

Sometimes it is useful to find out exactly which message calls are done
in a piece of code that is executed.  If __*trace-method-calls*__ is
**true**, Objective CL tries to print trace messages to
__*terminal-io*__ that can be useful for understanding the behaviour
both of application code and the internals of Objective CL itself.

If __*trace-method-calls*__ is __nil__ (which is the default), no trace
messages are printed.

Note that there is currently no way of determining the receivers of
messages.  As this limitation severely limits the usefulness of the
trace messages, it is expected to be lifted in a future version of
Objective CL.


## Examples:

\(With __install-reader-syntax__ enabled.)

    (defvar *tmp*)
    (setq *trace-method-calls* t)

    (setq *tmp* [NSString new])
    ; Invoking [new].

    (setq *tmp* [NSString string])
    ; Invoking [string].
    ; Invoking [retain].

    (setq *tmp* nil)
    (gc :full t)
    ; Invoking [release].
    ; Invoking [release].

    (setq *trace-method-calls* nil)

\(Note that objects created by a call to `new' are not retained, because
it is the user's (that is, the Objective CL framework's) responsibility
to release them, while convenience constructors such as `string' return
objects that have already had `autorelease' called on them and must thus
be retained not to be garbage-collected prematurely.)


## Affected By:

  __*terminal-io*__


## See also:

  __invoke__, __invoke-by-name__")