簡答題

1.請簡單的介紹下APNS發送系統消息的機制

APNS優勢:杜絕了類似安卓那種為了接受通知不停在后臺喚醒程序保持長連接的行為,由iOS系統和APNS進行長連接替代
APNS的原理:
    1.app向iOS注冊遠程推送通知
    2.iOS向APNS發送設備的UDID和app的Bundle Identifier.請求返回設備令牌(device Token)
    3.經APNS加密生成一個deviceToken,然后發送給app
    4.app將收到的deviceToken發送給自己的服務器
    5.服務器將得到的deviceToken進行保存,需要推送時將消息和deviceToken一起發送給APNS,
    6.APNS再通過deviceToken找到用戶,并將消息發給用戶

2.沙盒目錄結構是怎樣的?各自用于那些場景?

Application:存放程序源文件,上架前經過數字簽名,上架后不可修改
// 打印其路徑:NSLog(@"沙盒路徑:%@",NSHomeDirectory());

1.Documents:(用戶收藏或者設置)
    // 需要保存由應用程序本身產生的需要持久化文件或者數據,iTunes同步設備時會備份該目錄。例如:游戲進度、涂鴉軟件的繪圖。
    // 目錄中的文件會被自動保存在iCloud、iTunes.
    // 注意:不要保存從網路上下載的文件,否則會無法上架。
2.Library(自己緩存文件和SDWebImage緩存圖片)
    Caches:存放體積大又不需要備份的數據
        // 保存臨時文件,后續需要使用,例如:緩存圖片,離線數據(地圖數據)。
        // 系統不會清理cache目錄中的文件。
        // 要求程序開發時,必須提供Caches目錄的清理解決方案。
    Preference:設置目錄,iCloud會備份設置信息
        // 保存應用的所有偏好設置,使用NSUserDefault直接讀寫。(賬號密碼)。iTunes會同步設備時會備份該目錄。
        // 如果要想數據及時寫入磁盤,還需要調用一個同步方法。
        // 偏好設置一般是利用鍵值對保存,本質上也是plist文件,但是不用去找尋地址,有對應的文件夾,對應的方法查詢地址,保存。
3.tmp:存放臨時文件,不會被備份,而且這個文件下的數據有可能隨時被清除的可能
    // 保存臨時文件,后續不需要使用一般緩存比較大的,不重要的數據。
    // tmp目錄中的文件,系統會自動清理。
    // 重新啟動手機,tem目錄會被清空。
    // 系統磁盤空間不足時,系統會自動清理。

3.pushViewController和presentViewController有什么區別?

兩者都是在多個試圖控制器間跳轉的函數
presentViewController提供的是一個模態視圖控制器(modal)
pushViewController提供一個棧控制器數組,push/pop

4.控制器的生命周期,下面已經按方法執行順序進行了排序

// 自定義控制器view,這個方法只有實現了才會執行
- (void)loadView{
    [super loadView];
    self.view = [[UIView alloc] init];
    self.view.backgroundColor = [UIColor orangeColor];
    NSLog(@"--1--%s",__func__);
}
// view是懶加載,只要view加載完畢就調用這個方法
- (void)viewDidLoad{
    [super viewDidLoad];
    NSLog(@"沙盒路徑:%@",NSHomeDirectory());
    NSLog(@"--2--%s",__func__);
}
// view即將顯示
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"--3--%s",__func__);
}
// view即將開始布局子控件
- (void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    NSLog(@"--4--%s",__func__);
}
// view已經完成子控件的布局
- (void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    NSLog(@"--5--%s",__func__);
}
// view已經出現
- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"--6--%s",__func__);
}
// view即將消失
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"--7--%s",__func__);
}
// view已經消失
- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"--8--%s",__func__);
}

5.把一個NSNumber類型轉換成字符串類型的三種方法?

NSNumber *number = @2;
NSString *str = [NSString stringWithFormat:@"%@",number];
NSString *str1 = [number stringValue];
NSString *str2 = [number description];

6.所謂懶加載,寫的是其get方法,先get再set. 在使用的時候才去初始化

1.懶加載基本概念
懶加載——也稱為延遲加載,即在需要的時候才加載(效率低,占用內存小)。所謂懶加載,寫的是其get方法.
注意:如果是懶加載的話則一定要注意先判斷是否已經有了,如果沒有那么再去進行實例化
2.使用懶加載的好處:
(1)不必將創建對象的代碼全部寫在viewDidLoad方法中,代碼的可讀性更強
(2)每個控件的getter方法中分別負責各自的實例化處理,代碼彼此之間的獨立性強,松耦合

- (void)viewDidLoad {
    // 先get再set
    self.label.text = @"懶加載";
}
// 延遲加載
- (UILabel *)label {
    // 判斷是否已經有了,若沒有,則進行實例化
    if (!_label) {
        _label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 40)];
        _label.backgroundColor = [UIColor cyanColor];
        [self.view addSubview:_label];
    }
    return _label;
}

7.C和OC冒泡排序

int arr[6] = {2,1,5,6,3,4};
for (int i = 0; i < 6-1; i++) {
    for (int j = 0; j < 6-1-i; j++) {
        if (arr[j] > arr[j + 1]) {
            int temp = 0;
            temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"2",@"1",@"5",@"6",@"3",@"4"]];
NSString  *temp;
for (int i = 0; i < array.count; i ++) {
    for (int j = 0; j < array.count  - 1 - i; j++) {
        if ([[array objectAtIndex:j] integerValue] > [[array objectAtIndex:j + 1] integerValue]) {
            temp = [array objectAtIndex:j];
            [array replaceObjectAtIndex:j withObject:[array objectAtIndex:j + 1]];
            [array replaceObjectAtIndex:j + 1 withObject:temp];
        }
    }
}

8.觸摸事件的傳遞響應過程

UIView不能接收觸摸事件的三種情況:
1.不接受用戶交互:userInteractionEnabled = NO;
2.隱藏:hidden = YES;
3.透明:alpha = 0.0~0.01

UIApplication-->UIWindow-->遞歸找到最合適處理的控件-->控件調用touches方法-->判斷是否實現touches方法-->沒有實現默認會將事件傳遞給上一個響應者-->找到上一個響應者-->...-->UIWindow-->UIApplication-->事件作廢

響應過程.png

9.將兩個字符串拼接在一起的方法

NSString *str = @"Hello ";
[NSString stringWithFormat:@"%@%@",str,@" World"];
[str stringByAppendingString:@" World"];
[str stringByAppendingFormat:@"%@%@",str,@" World"];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容

  • 收集非原創文章,如遇原作者,請私聊我,我會表明出處! 1--10 1. C++中什么數據分配在棧或堆,靜態存儲區以...
    Juinjonn閱讀 4,962評論 0 30
  • 1.寫出四種匿名委托的格式 答:委托的格式:(每點 1 分) (1)delegate(參數列表) {方法體}; (...
    胤醚貔貅閱讀 1,382評論 0 5
  • 傳播效果研究有兩個基本方面:其一是對個人效果產生的微觀過程分析;其二是對社會效果產生的宏觀過程分析。這兩個方面的研...
    劉二傻閱讀 11,042評論 2 21
  • 當我揮斧劈柴, 天空忽然暗了下來。 我沒有抬頭看, 斧子準確而有力, 圓木從中心迸裂。 樹干,樹枝,樹杈, 乖乖地...
    三水林楓閱讀 363評論 2 4
  • 參考書目《控場:主宰和說服的關鍵能量》 分享成功社交的五個步驟: 共振 利用吸引力法則,我們總是被有相同磁場的人所...
    錢生錢落地實操閱讀 203評論 0 4