iOS知識樹,知識點
| |-> NSURLSession & NSURLSessionTask 【點選】NSURLSession提供的功能:
| | 通過URL將資料下載到記憶體【點選】
| | 通過URL將資料下載到檔案系統
| | 將資料上傳到指定URL
| |
| |-> NSURLRequest 包裝了網路請求的資訊【點選】
| |-> NSInputStream & NSOutputStream socket程式設計【點選】
| |-> NSPredicate
| |謂語查詢,原理和用法都類似於SQL中的where【點選】
| |-> NSLayoutConstraint
| |
| | 最基本的同步鎖【點選】
| | @synchronized{//todo} 同樣也是同步鎖【點選】
| | 事實上訊號量也能實現鎖的目的,訊號量和鎖的區別【點選】第二篇【點選】
| |->NSMethodSignature
/ |
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、tableview,UIViewController、提交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樹上查詢的過程是一個順指標查詢結點和在
B樹,B+樹,B*樹相關知識以及Mysql資料庫中的兩種引擎
原文地址: http://m.blog.csdn.net/article/details?id=53164202 接觸到了資料結構當中的B樹,B+樹,B*樹,我覺得應該寫一篇部落格記錄下,畢竟是第一次接觸的,只有寫了部落格以後,感覺對這個的印象才會更加深刻。 前言: 為
HTML,CSS,JavaScript知識樹思維導圖
最近師父佈置的學習任務,就是構建知識樹。一個週末終於完成了任務,有一些是網上有的,就直接用了,有些沒有,就是自己總結的。整理的過程中發現前端的知識真是錯綜複雜,還有層出不窮的各種框架。任重而道遠 想要原稿的可以留言郵箱,統統發給你! 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中extern,static和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)。它是編程語言中表示文本的數據類型。在程序設計中,字符