2015年9月21日月曜日

AnyObject型に入れたクラスのメソッドが実行できない?

Swiftには、Objective-Cのid型にあたる汎用型のAnyObject型というのがあるわけだ.

しかし、以下のようにClassAにmethodAというメソッドとaというプロパティが設定されていた場合、型推論でClassA型になった変数obj1についてはメソッドもプロパティもいじくれるが、
//うまくいく例
let obj1 = ClassA()
obj1.methodA()
obj1.a = 100


AnyObject型として定義した場合はメソッドもプロパティもいじれず、エラーになってしまう。
//うまくいかない例
let obj2: AnyObject = ClassA()
obj2.methodA()
obj2.a = 100

一つの変数にいくつものクラスを入れて使いまわしたいと思ったのだが、ダメなのかな?

ちなみにObjective-Cでも同じこと試してみたけどダメだった。
ただし、プロパティはSetter/Getterメソッド使えばアクセスできた。

0 件のコメント:

コメントを投稿