プロパティは、スクリプトを再コンパイルするまで保持されます。プロパティの設定中にスクリプト ファイルをロードすると、実行時ではなくコンパイル時に行われます。これは、スクリプトのコピーが保存され、プロパティがファイルに関連付けられていないことを意味します。スクリプト エディターで動作する理由は、ファイルが再コンパイルされるためです。つまり、parent.scpt が最新バージョンに再度読み込まれます。
親オブジェクトをロードすることはお勧めしません。子オブジェクトをロードすることをお勧めします。ここで、ルート オブジェクトからオブジェクト ツリーを構築する方が適切な親チェーンの最下部から開始します。
オブジェクトツリーにオブジェクトを動的に追加しようとしているコードを見ると。これを行う1つの方法は次のとおりです。
親.scpt:
property name : "I'm the parent"
property b : 100
set theChildLib to load script POSIX file "/Users/shortname/Desktop/child.scpt"
set theChild to theChildLib's newChildObject(me)
return {theChild's parent's name, theChild's name, theChild's a, theChild's b}
child.scpt:
on newChildObject(_parent)
script childObject
property parent : _parent
property name : "I'm the child"
property a : 2
end script
return childObject
end newChildObject
ご覧のとおり、子から親を呼び出すことができます。オブジェクトに存在しないプロパティを呼び出すと、親子関係に従います。