在開(kāi)發(fā)iOS的SDK中,會(huì)遇到從宿主app跳轉(zhuǎn)至SDK的情景姊途。在SDK的開(kāi)發(fā)中涉瘾,開(kāi)發(fā)者是按照自已的需求進(jìn)行開(kāi)發(fā)的,所以很容易出現(xiàn)對(duì)導(dǎo)航欄樣式的改變吭净。
而宿主app采用棧式導(dǎo)航將SDK壓入到導(dǎo)航棧中睡汹,所有在棧中的視圖控制器公用一個(gè)導(dǎo)航控制器,如果SDK在入棧時(shí)將導(dǎo)航欄視圖控制器的外觀改變寂殉,那么當(dāng)出棧時(shí)如果沒(méi)有恢復(fù)導(dǎo)航控制器的外觀囚巴,那么宿主app的導(dǎo)航視圖控制器的外觀就會(huì)被改變,這是SDK開(kāi)發(fā)者不想看到的友扰,因?yàn)镾DK本身的設(shè)計(jì)思想就是模塊化開(kāi)發(fā)彤叉,高度解耦。當(dāng)宿主app調(diào)用SDK后村怪,SDK調(diào)用完畢時(shí)改變了宿主app并不想改變的東西秽浇,就會(huì)造成耦合。
所以甚负,需要SDK在調(diào)用完畢時(shí)恢復(fù)宿主app的導(dǎo)航視圖控制器狀態(tài)柬焕。看下面的一個(gè)例子:
//
// SettingBaseVC.m
// LanYunNews
//
// Created by whf on 17/3/25.
// Copyright ? 2017年 apple. All rights reserved.
//
#import "SettingBaseVC.h"
@interface SettingBaseVC ()
@end
@implementation SettingBaseVC
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self setNavi];
}
- (void)dealloc {
NSLog(@"%@---free",NSStringFromClass([self class]));
}
@end