Xcode
iOS
Swift

SwiftでのNSNotificationCenterの片付けはdeinitで

More than 3 years have passed since last update.

SwiftでNotificationCenterの監視の解除を行おうとした際に、deallocメソッドがないことに気が付き困ってしまいました。

ひとまずNSObjectのドキュメントを見に行くと、Swiftではdeallocがない。
deallocについて.png

それも当然で、SwiftのドキュメントのDeinitializationのページを見てみると、

A deinitializer is called immediately before a class instance is deallocated. You write deinitializers with the deinit keyword, similar to how intializers are written with the init keyword.

とあり、Swiftではdeinitを記述するとのことです。言語自体が違うんですもんね。

書いてみるとこんな感じ。

deinit {
    let notificationCenter = NSNotificationCenter.defaultCenter()
    notificationCenter.removeObserver(self, name: "com.hogehoge.someNotification", object: nil)
}

ということで、後片付けをお忘れなく。