UIAppearance は、iOS7.0.x で非常に遅いです。上記のスタック トレースによると、外観メソッドを適用すると、毎回 (または少なくとも何度も) method_exchangeImplementations() が呼び出され、ターゲット クラスとすべてのサブクラスの ObjC ランタイムのキャッシュをクリアする必要があるように見えます。それをしている間、グローバルロックを保持します-非常に遅いです。UIAppearance が変更されたのか、それとも ObjC ランタイムに変更があったため、このケースが以前よりも病的に遅くなったのかはわかりません。
さらに、UILabel の setShadowOffset: メソッドと setShadowColor: メソッドも非常に遅いことがわかりました。これは、外観が変更されたバージョンのように見え、同じ問題があるためです (UI_APPEARANCE_SELECTOR というラベルが付いていないにもかかわらず)。
全体的な解決策の 1 つは、UIAppearance をあまり使用しないか、まったく使用しないことです。UILabel メソッドについては、最初に値を変更する必要があるかどうかを確認し、必要がない場合はセッターを呼び出さないでください。
別の可能な解決策は、少なくとも UIView ベースの呼び出しについては、UIAppearance の再実装である CTAppearance です (遅いままの UIBarItem 外観呼び出しでは何もしません) 。現在、プル リクエストだけでいくつかのパッチが必要であり、何らかの助けがなければ UIPopover コンテナーを処理できません。その動作も UIAppearance とは少し異なります (たとえば、呼び出されるタイミングに応じて明示的に設定された値をオーバーライドする場合があります) が、状況によっては (かなり) 役立つ場合があります。
注: UIAppearance は iOS 7.1 で修正されたようです。