質問: iOSアプリで、サードパーティのプッシュ通知サービスの導入を検討しています。 導入する場合、アプリにそのサービスのSDKを入れる必要があるのですが、一つ悩んでいることがあります。 プッシュ通知が開封された際、自前でも処理を行いたいと思っており、例えば ``` func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) ``` などのメソッドで受け取りたいです。 ただ、仮にSDKの内部に同じメソッド名で何らかの処理が定義されていたとき、その処理を潰すことなく自前の同名メソッドで上書きできるのか不安です。 普通に同じ名前で別々に定義すると、名前が衝突してコンパイルエラーになることは理解しています。そのため、例えば親クラスからの継承の場合のように、自前メソッド内で先にSDK内のメソッドを呼んでおくことができればよいのですが、importの場合それができるのかがわかりません。 SDKが手元にあればテストしてみるだけで済む話なのですが、まだ数社を比較検討している段階なので、実験できない状態です。 swiftとobjective-cそれぞれで、同名メソッドの場合はどのような挙動になるのでしょうか?
回答: 完全に安心とは言えませんが、その実装で問題が出るSDKは稀だと思います 普通に考えれば class内に同名のメソッドは許されないのはimportしようが同じです overrideしてしまうリスクは、利用側がswiftならoverrideを指定しない限りできないのでこれもコンパイラエラーになります(obcは気づかないんですが、swiftからobcを利用する場合はoverride指定が必要です) UIResponderに割り込んだり、UIApplicationMainのUIApplicationDelegateの処理を奪うこととかいうことは、obcならできなくはないかもしれませんが(私はわかりません)、その場合も処理を奪った後AppDelegateの該当メソッドを呼ぶはずです でないと利用者が困ってしまいます とは言えやはり質問するのが早いと思います