原创 對象 類對象 元類對象

對象 類對象 元類 對象的isa指針指向類對象 類對象的isa指針指向元類 類對象和元類其他都是對象,是編譯器爲我們創建的。 對象初始化 先根據類對象初始化內存大小。 初始化對象isa指針即可。 方法的調用 對象方法的調

原创 過渡與動畫

過渡示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test</title> <script src="https://cd

原创 引用計數與弱引用

簡書:https://www.jianshu.com/p/ef6d9bf8fe59 gitHub:https://github.com/Draveness/Analyze/blob/master/contents/objc/黑箱

原创 UITextView自適應高度

currentLineNum = 1;//默認文本框顯示一行文字 NSDictionary *dict=@{NSFontAttributeName:[UIFont systemFontOfSize:14.0]}; CGSize c

原创 訪問控制

訪問控制修飾符 open: 模塊完全開放,在別的模塊下可以進行繼承後重寫。 public: 模塊開放,在別的模塊下不可以進行繼承重寫。 internal: 只能在本模塊內部使用。(默認) fileprivate: 只能在本文

原创 自動引用計數

使用弱引用解決循環強引用 如果兩個變量屬性都可以設置爲nil,那麼就用弱引用來設置其中一個屬性來解決循環強引用。 class Person { let name: String init(name: Strin

原创 內存安全

在inout參數的函數 inout參數的變量會在函數內進行長期的寫訪問,如果在這個期間函數內部訪問了外部的這個相同的內存將會報錯,發生運行時的錯誤。 解決辦法1是在函數外將這個內存的值複製一份給兩一個變量,這樣在函數內部訪問這

原创 高級運算符

位運算符 // 1. 按位取反運算符 var a: UInt8 = 0b00001111 var b = ~a print(b,terminator:"\n\n") // 2. 按位與運算符 var c = a & b pr

原创 不透明類型

它是swift5.1新特性 不透明類型可以將函數的返回類型進行隱藏。 不透明的返回類型將更加靈活。 不透明類型是反泛型。泛型是調用者知道具體哪個類型,但是不透明類型是模塊的設計者才知道具體是哪個類型。 不透明的返回類型要有統一的

原创 類,結構體,枚舉類型比較總結

枚舉類型 枚舉類型只有case,沒有常量變量(不一樣地方) 可以有實例方法,類型方法。 可以有指定構造器,沒有便利構造器(不一樣地方) 可以有可變實例方法(不一樣地方) 可以有下標 它的原始值類型只有Int,Doublt, F

原创 協議

協議語法 protocol protocol1 { } protocol protocol2 { } class Test { } class Test1: Test, protocol1,

原创 泛型

泛型視圖解決存儲不同的數據類型,或者方法的入參是不同的數據類型。這樣可以優雅的減少了很多不必要的重複代碼。 func exchangeTwoValue<T>(a:inout T, b: inout T){ let te

原创 類型轉換

類型判斷操作符 ==,!=判斷倆個值類型是否相等 ===,!==判斷兩個引用是否是一個內存地址 is判斷某個對象是否是某個類型 class MediaItem { var name: String ini

原创 嵌套類型

類型可以嵌套,甚至多層嵌套 struct BlackJackCard { enum Suit: Character { case spades = "♠", hearts = "♡", diamonds =

原创 可選鏈

可選鏈就是有些對象是可選類型的,這時候用這個對象調用方法或者屬性的時候如果強制解包會發生運行時錯誤。所以用可選?來調用。這樣就是形成一個鏈式的調用。 class Person { var residence: Resi