Objective-Cの[SomeClass class]はSwiftではSomeClass.selfと書く
AVFoundation の AVPlayer を Objective-C で使おうとすると以下のようなコードが必要になります。
#import "AVPlayerView.h" #import <AVFoundation/AVFoundation.h> @implementation AVPlayerView + (Class)layerClass { return [AVPlayerLayer class]; } @end
これを Swift に書き換える場合 [AVPlayerLayer class] をどう書き換えればいいのか分からなかったのですが、Stack Overflow に答えがありました。
» Swift class introspection & generics – Stack Overflow
回答によると「The Swift Programming Language: Types」にもあるように .self を使えばいいそうです。
したがって先程のコードは次のようになります。
import AVFoundation class AVPlayerView: UIView { override class func layerClass() -> AnyClass { return AVPlayerLayer.self } }
まぁ書き換えなくても Bridging-Header を使えば Objective-C のまま読み込んで使えるのですが、書き換え方が分かったのですべて Swift に書き換えました。
(追記 2014-08-10) AnyClass! を AnyClass に修正
コメントを残す