既存ユーザにおそらく影響する変更点は事実上2つだけです。ユーザのアプリケーションに要求される他のすべての変更は、大部分がこれら2つの変更から生じます。
すべてのSwarmの機能は、十分に定義されたインターフェイス、Objective Cプロトコルだけを通じてエクスポートされるようになりました。本質的には、作成可能な、あるいはサブクラス化が可能なすべてのプロトコルは、defobj、activity、collectionsライブラリのそれと同じ規則に従うようになったことを意味します。今後Swarmプロトコルの静的な型づけがパッケージに使われることはありません。
ライブラリのヘッダファイルは、それらの個々のクラスヘッダファイルを一切含まなくなりました。
XPixmapプロトコルはPixmapに変更され、X Windowsとの関連はなくなりました。
Swarmプロトコルとして定義されたクラスのサブクラスには、すべてそのプロトコルのヘッダファイルの"明示的な"インポートが必要になりました。以前は、警告が現れるだけでした。これは、特にSwarmとSwarmObjectに影響します。たとえば以下のように定義しているなら、
@interface MyObject: SwarmObject |
#import <objectbase/SwarmObject.h> |
Swarmプロトコルに従うオブジェクトに対するすべてのリファレンスは、適切なSwarmプロトコルに従うように定義されるか、型づけされないままにしなければなりません。何があっても、静的に型づけをしないでください。実践的には、これは次のどちらかの記述ができることになります。
id <Grid2d> world; または id world; |
Grid2d *world; |
HeatSpace.h
space/Diffuse2d
Heatbug.h
インスタンス変数worldをid Grid2d *;でなく、id <Grid2d> worldプロトコルに従わせてください。(x)
Heatbug.m
[Heatbug -setWorld:]メソッドで、プロトコルへのキャストを静的でなくしてください。(x)
HeatbugModelSwarm.h
HeatbugObserverSwarm.h
インスタンス変数をGrid2d *worldでなくid <Grid2d> worldにしてください。(x)
[HeatbugObserverSwarm -getWorld:]メソッドの静的キャストをプロトコルバージョンに変更してください。(x)
以下のすべてをそれぞれのプロトコルに変更してください。(x)
EZGraph *unhappyGraph; Value2dDisplay *heatDisplay; Object2dDisplay *heatbugDisplay; |
MousetrapModelSwarm.h
Swarmからのサブクラスに<objectbase/Swarm.h>をインポートしてください。(*)
インターフェイスに使用されていないような、関係のない<activity.h> <collections.h> <simtools.h> <objectbase.h>のインポートを削除してください。(x)
Grid2dのインスタンスを、静的に型づけせずプロトコルに従わせてください。(x)
MousetrapObserverSwarm.h
EZGraph, Object2dDisplayのインスタンスを、静的に型づけせずプロトコルに従わせてください。(x)
Mousetrap.h
<objectbase.h>のインポートを削除してください。 (x)