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 に修正
コメントを残す