1. 程式人生 > >iOS知識樹,知識點

iOS知識樹,知識點

|                    |-> NSURLConnection iOS9已不再使用
|                    |-> NSURLSession & NSURLSessionTask 點選NSURLSession提供的功能:
|                    |            通過URL將資料下載到記憶體點選
|                    |            通過URL將資料下載到檔案系統
|                    |            將資料上傳到指定URL
|                    |
            
在後臺完成上述功能點選
|                    |-> NSURLRequest 包裝了網路請求的資訊點選
|                    |-> NSInputStream & NSOutputStream socket程式設計點選 
|                    |-> NSPredicate 
|                    |謂語查詢,原理和用法都類似於SQL中的where點選
|                    |-> NSLayoutConstraint
        |                    |
-> 
NSLock & NSRecursiveLock & NSCondition 
多執行緒鎖
|                    |          最基本的同步鎖點選
|                    |          @synchronized{//todo} 同樣也是同步鎖點選
|                    |          事實上訊號量也能實現鎖的目的,訊號量和鎖的區別點選第二篇點選
|                    |->NSMethodSignature
      /                      |
配合NSInvocation實現訊息轉發點選
iOS                       |->NSInvocation 直接呼叫 某個物件的訊息點選
\|          iOS中可以直接呼叫 某個物件的訊息 方式有2種performSelector:withObject: 和NSInvocation
        |                    |          當然,還以用C語言的函式指標,參見下面的“方法調配技術
|                    |-> NSSet 無序的物件集合,用處少
        |                    |-> NSUrl基本使用,包含File URL和File path點選
        |                    |-> AVPlayer基本使用點選
||獲取視訊時間長度 點選
|\->NSNotificationCenter 同步的機制點選注意防止重複,相似的機制還有delegate,observer,block
|
        |                    /-> 建立push原理介紹、證書製作、測試push 專輯
 點選
        |                    |       "iOS push全方位解析(一)【譯文】"——iOS PUSH概述點選
        |                    |       "iOS push全方位解析(二)【譯文】"——生成OpenSSL證書,Provisioning Profile點選
        |                    |       "iOS push全方位解析(三)【譯文】"——一個極簡的demo,並測試一下push點選
        |               /
        |->Push         
        |               \
        |                    |
       
iOS6、7、8、9 Push的演化 點選,但目前還是不盡人意(APP 無法獲取通知欄訊息數目)
        |                    |       ★ php寫的可以在本機發送iOS push程式點選
        |                    |        iOS7 Background Remote Notification(後臺遠端通知——靜默push)點選
|                    \->有一些三方push SDK:極光push
        |
        |->block 必須掌握
|block專輯點選;Block帶有區域性變數的匿名函式;iOS開發尤其實用
        |              【block程式設計第一篇】 block程式設計熱點介紹(官方文件翻譯的)點選
        |              【block程式設計第二篇】 block捕獲變數和物件點選
        |              【block程式設計第三篇】block記憶體管理——如何驗證block在棧上,還是堆上點選
        |              【block程式設計第四篇】block的實現點選
        |              【block程式設計第五篇】block中使用 weak–strong dance 技術避免迴圈引用點選
|->多執行緒
|            iOS有三種多執行緒程式設計的技術,分別是:點選
|                 1、NSThread 下面會講到
|                 2、Cocoa NSOperation 下面會講到
|                 3、GCD 下面會講到
|                這三種程式設計方式從上到下,抽象度層次是從低到高的,抽象度越高的使用越簡單。
|            dispatch_once 執行一次,用於建立單例點選可滿足執行緒安全
|           iOS 不像C++ 那樣,可以直接將建構函式設成private所以建立絕對單例模型需重寫allocWithZone,點選
|                
        |                       /-> 引用計數(retainCount)
        ||   retain 引用計數+1 物件alloc時,引用計數為1, release引用計數-1.引用計數=0時候,真正釋放
        ||   autoRelease,自動釋放物件點選
        |                       |-> 便捷構造方法 iOS
        |                       |          物件在自動釋放池中,不需要開發者手動釋放,比如下面的方法
        |                       |          NSString的stringWithString
        |                       |          NSArray的arrayWithObjects:和arrayWithArray:
        |                       |          UIImage的imageNamed:
        |                       |-> 記憶體管理高階指南官方譯點選
|                       |-> 記憶體管理實踐點選
        |/
        |-> 記憶體管理專欄點選
        |                     \
        |                       |-> MRC
 手動引用計數。release和retain成對兒
        |                       \->ARC 自動引用計數
        |                            強烈建議使用ARC
        |                            禁止在函式內返回區域性變數指標,不然就是野指標!
        |                        容易引起迴圈引用的地方點選
|- (id)performSelector:(SEL)aSelector withObject:(id)object;引起警告
|warning:performSelector may cause a leak because its selector 點選
        |
        |-> 程序間通訊(APP間通訊)點選】【點選
|                 iOS可通過URL Scheme,呼叫別的APP(iOS內的應用呼叫協議),APP 實現 - (BOOL)application: openURL: options: 
|
|/-> Runtime 執行時特點《執行時之一:類與物件》南峰子出品 點選
        |                            |        Objective-C程式設計師可以在程式執行時建立,檢 查,修改類,物件和它們的方法點選
        ||        Objective-C runtime庫也負責找出方法的最終執行程式碼
        ||        class  Objective-C類是由Class型別來表示的,它實際上是一個指向objc_class結構體的指標。
        ||            struct objc_class {
        ||            Class isa  OBJC_ISA_AVAILABILITY;
        ||        #if !__OBJC2__
        ||            Class super_class                       OBJC2_UNAVAILABLE;  // 父類
        ||            const char *name                        OBJC2_UNAVAILABLE;  // 類名
        ||            long version                                 OBJC2_UNAVAILABLE;  // 類的版本資訊,預設為0
        ||            long info                              OBJC2_UNAVAILABLE;  // 類資訊,供執行期使用的一些位標識
        ||            long instance_size                       OBJC2_UNAVAILABLE;  // 該類的例項變數大小
        ||            struct objc_ivar_list *ivars            OBJC2_UNAVAILABLE;  // 該類的成員變數連結串列
        ||            struct objc_method_list **methodLists   OBJC2_UNAVAILABLE;  // 方法定義的連結串列
        ||            struct objc_cache *cache        OBJC2_UNAVAILABLE;  // 方法快取
        ||            struct objc_protocol_list *protocols    OBJC2_UNAVAILABLE;  // 協議連結串列
        ||        #endif
        ||        } OBJC2_UNAVAILABLE;       
        ||                1. isa:所有的類自身也是一個物件,這個物件的Class裡面也有一個isa指標,它指向metaClass
        ||                2. super_class:指向該類的父類,如果該類已經是最頂層的根類,則super_class為NULL。
        ||                3. cache:用於快取最近使用的方法。提高方法查詢效率
        ||        objc_object與id objc_object是表示一個類的例項的結構體
        ||                struct objc_object {
        ||                    Class isa  OBJC_ISA_AVAILABILITY;
        ||                };
        ||                typedef struct objc_object *id;
        ||           當建立一個類的例項物件時,分配的記憶體包含objc_object資料結構,然後是類的例項變數的資料。
        ||           NSObject類的alloc和allocWithZone:方法使用函式class_createInstance來建立objc_object資料結構。
        ||           另外還有我們常見的id,它是一個objc_object結構型別的指標
        ||        meta class元類,是一個類物件的類;它儲存著一個類的所有類方法。
        ||           當我們向一個物件傳送訊息時,runtime會在這個物件所屬的這個類的方法列表中查詢方法;
        ||           而向一個類傳送訊息時,會在這個類的meta-class的方法列表中查詢。

相關推薦

【精】iOS知識知識點(包括物件、Block、訊息轉發、GCD、執行時、runloop、動畫、Push、KVO、tableviewUIViewController、提交AppStore)

        本文旨在總結iOS知識網路,知識點,該知識網路羅列出常見UIKit、Foundation的物件特點和一些使用經驗,可以看成是一本書;文字編輯採用樹的形式,對知識點進行羅列,並標註一些使用經驗(★)希望對初學者有用或給一些解決疑難雜症者提供思路;某些知識點會深入

iOS知識知識點

|                    |-> NSURLConnection iOS9已不再使用 |                    |-> NSURLSession & NSURLSessionTask 【點選】NSURLSession提供的功能: |          

#一個7年程式設計師的知識值得借鑑!

一轉眼工作將近7個年頭,時間過得好快哇。年少不懂事,上天懲罰我,婚也結了。不要暗戀哥,哥已是傳說。恍恍惚惚過了這麼多年,想整理下個人技能樹,也提醒下自己。 如果有想要學習java的小夥伴,可來我們的java學習扣裙哦:72340,3928裡面贈送java系列教學

資料結構期末複習知識查漏補缺並配(帶詳解的)查漏習題(B雜湊(雜湊)平衡二叉KMP)

一.B樹(也叫B-)與B+樹專題 (1)B樹 重點總結: 1.結點最大的孩子數目稱為B樹的階。所以,2-3樹是3階B樹,2-3-4樹是3階B樹 2.所有葉節點位於同一層次 3. 4.,一般均是升序或降序 5.在B樹上查詢的過程是一個順指標查詢結點和在

BB+B*相關知識以及Mysql資料庫中的兩種引擎

原文地址: http://m.blog.csdn.net/article/details?id=53164202 接觸到了資料結構當中的B樹,B+樹,B*樹,我覺得應該寫一篇部落格記錄下,畢竟是第一次接觸的,只有寫了部落格以後,感覺對這個的印象才會更加深刻。  前言:  為

HTMLCSSJavaScript知識思維導圖

最近師父佈置的學習任務,就是構建知識樹。一個週末終於完成了任務,有一些是網上有的,就直接用了,有些沒有,就是自己總結的。整理的過程中發現前端的知識真是錯綜複雜,還有層出不窮的各種框架。任重而道遠 想要原稿的可以留言郵箱,統統發給你! PS:微信公眾號     

二叉排序java實現(知識簡單的實現持續完善更新)

定義: 二叉排序樹就是左子樹都比節點小,右子樹都比節點大。簡單的排序二叉樹實現。 程式碼: package com.wzq.data_structure; public class Bina

iOS開發者知識普及Swift 挑戰 Objective-C誰會笑到最後?

目標 希望 -i 融合 需要 發展規劃 選擇 及其 文章 前言: 目前全球共有超過 7 億臺 iPhone 處於活躍狀態,全球約有2000萬名 iOS 開發者,這造就了 iOS 作為全球第二大移動設備平臺的狀態。 雖然安卓系統的全球市場占有率超過 iOS 系統,但在諸如

[HDOJ3308]LCIS(線段區間合並新的代碼)

最優解 tdi php %d bits 給定 namespace span const 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 題意:給定n個數,兩個操作: U A B:將位置A的數值改成B Q A B:查詢[

[51nod 1208] Stars in Your Window(線段掃描線)

51nod clas html 題目 val col while cto pro 題目鏈接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1208 題意:也是矩形框點問題,不過每個點有權值,希望

iOS]關於 App 混合(Hybrid)開發的優化包括H5、Weex等(本篇博客主要針對 iOS 應用講解但該思想同樣適用於Android)

color 數據 後臺 lib 新版 生成 下載地址 代碼 版本   我們知道混合開發,可以節省很多成本(時間成本,經濟成本等等),所以有很多公司比較鐘愛這種開發形式,今天所講的優化方式,也是我在我們公司的應用中實際用了的,而且我寫的這個優化的 SDK 已經開源到 gith

小胖說事28------iOS中externstatic和const差別和使用方法

方法 string 文件 only 聲明 sans nbsp ring const 通俗的講: extern字段使用的時候,聲明的變量為全局變量,都能夠調用,也有這樣一種比較狹義的說法:extern能夠擴展一個類中的變量到還有一個類中;

Ios-視頻直播-知識點匯總-持續更新

輕量級 平臺 依依 音頻 pcm shtml too 攝像 服務 最近公司要求做視頻直播,之前工作幾年,視頻一直都是弱項,沒怎麽接觸過,現在正好有機會深入的去了解一下,記錄一些遇到的坑和需要用到的東西. ~公司要求,用HLS協議,要求可以播放m3u8格式的,當時一聽一臉懵逼

POJ 2104 K-th Number(區間第k大數)(平方切割歸並劃分

ac代碼 deb rank turn tracking line 查看 div 能夠 題目鏈接: http://poj.org/problem?id=2104 解題思路: 由於查詢的個數m非常大。樸素的求法無法在規定時間內求解。因此應該選用合理的方式維護數據來做到高效

[rctf](web)rcdn 解題分析知識點總結

數據庫 方法 code dom arc 比賽 start 關閉 學習 比賽平臺關閉了,沒有截圖,見諒。 解題思路流程: 分析網站結構,看源碼,元素審計。發現以下信息。 要得到flag要獲得一個pro cdn pro 子域名長度為3到6個字符 存在一個提交ticke頁面

給定一個二叉獲取該二叉的寬度深度

prototype %d param unsigned right idt height push signed 題目: Description 給定一個二叉樹,獲取該二叉樹的寬度深度。 Prototype int GetBiNo

關於 iOS 的 StoryBoard接受的那一刻才發現她的美 - 當然美的事物都須要業心照料

creat 你是 targe -m == ext 保留 arduino code 關於 iOS 的 StoryBoard,接受的那一刻才發現她的美 - 當然美的事物都須要業心照料太陽火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“

hiho1041 - 遍歷

con 鏈接 二維 amp i++ logs 數組存儲 cst ons 題目鏈接 給一棵樹,給一個序列,問能不能按這個序列遍歷這棵樹,滿足每條邊最多經過兩次。 ---------------------------------------------------------

關聯容器set的用法(關聯容器紅黑

ise 特定 using iter tor pre .com main com set和multiset會根據特定的排序準則自動將元素排序,set中元素不允許重復,multiset可以重復。// 2017/7/23號 好像set容器裏面只能裝一個元素#include<

關聯容器map(紅黑key/value)

數值 logs items image 劃線 tor tar 參數 cde 字符串或串(String)是由數字、字母、下劃線組成的一串字符。一般記為 s=“a1a2···an”(n>=0)。它是編程語言中表示文本的數據類型。在程序設計中,字符