原创 iOS設計模式解析:抽象工廠模式

現實場景 標準的披薩有澆頭、奶酪、醬、麪餅,但披薩的風味很多。假設一家比薩店有兩位廚師,分別擅長做紐約風味的披薩和芝加哥風味的披薩。當你分別點兩種口味的披薩後,兩個廚師會分別準備對應的配料、麪餅、食材等。這兩種風味的披薩,儘管是不同的披薩,

原创 isa詳解

在arm64架構之前,isa就是一個普通的指針,存儲着Class或Meta-Class對象的內存地址。arm64架構之後對isa做了優化,isa變成了共用體(union)結構,還使用了位域來存儲更多的信息。 下面是runtime源碼中對ar

原创 Block的循環引用

先上代碼 #import "ViewController.h" #import "Person.h" typedef void(^BlockDemo)(void); @interface ViewController () @pro

原创 __block的實現和內存管理

__block的內存管理 當block使用外部變量時,是不能直接在block內修改這些變量的。我們用__block修飾變量後就能夠修改了。但需要說明一點__block只能用於auto變量無法修改,__block不能修飾全局變量、靜態變量。

原创 Block的本質和類型

Block的本質 - (void)typeOfBlcok { void(^block)(void) = ^{ }; NSLog(@"%@",[block superclass]); NSLog(@"%@",[[bl