# Notes

// TO DO: update

## Security issues

If including user names and/or passwords in remote application URLs, please note that `XXApplication` and `XXSpecifier` objects will retain those URL strings over their entire lifetime. Security here is the developer's responsibility, as it's their code that creates and retains these objects.

## GUI Scripting

Non-scriptable applications may in some cases be controlled from SwiftAutomation by using System Events to manipulate their graphical user interface. Note that the "Enable access for assistive devices" checkbox must be selected in the Universal Access system preferences pane for GUI Scripting to work.

## Type bridging limitations

Some applications (e.g. QuarkXpress) may return values which SwiftAutomation cannot convert to equivalent Cocoa types. These values are usually of types which are defined, used and understood only by that particular application, and will be represented in Objective-C as `AEDesc` instances which should generally be treated as opaque values.

A few standard but rarely used AE types are also currently unbridged with Cocoa counterparts, such as image types (`typePict`, `typeTIFF`, etc.). Client code should perform any necessary conversions itself.

## SwiftAutomation and threads

SwiftAutomation is thread-safe and events can be sent (and their replies received) from any thread.

## Credits

Many thanks to all those who have contributed comments, suggestions and bug reports.