//方法一 NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",nil]; //方法二 NSMutableArray *arr2 = [[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil]; //方法三 NSMutableArray *arr3 = [NSMutableArray addObjectFromArray:arr];
KVOController https://github.com/facebook/KVOController
不是特別瞭解這方面 在git上找個了start最多的。html
OC中的代理有2層含義,官方定義爲 formal搜索和informal protocol。前者和Java接口同樣。informal protocol中的方法屬於設計模式考慮範疇,不是必須實現的,可是若是有實現,就會改變類的屬性。java
MVVM (Model——View——ViewModel)
MVVM:一個 MVC 的加強版,Model 層天然少不了,ViewModel 表示網絡請求、視圖頁面邏輯和一些複雜業務邏輯代碼從 Controller 剝離出來生成一個新的對象,以減小 controller 層的業務邏輯和頁面邏輯 。
MVVM 能夠兼容你當下使用的 MVC 架構。
MVVM 增長你的應用的可測試性。
MVVM 配合一個綁定機制效果最好。
(MVC、觀察者、代理、單例 這些就不說了,自行百度吧)ios
請看第五題。git
@property(nonatomic, copy) NSString *apple; --------------------------------------------- - (void)setApple:(NSString *)apple // setter { if(_apple != apple){ [_apple release]; _apple = [apple copy]; // 若是屬性裏面的是retain 就將copy 換成 retain } } - (NSString *)apple // getter { return [[_apple retain] autorelease]; } ----------------------------------------------
NSString *string = @"ios"; 靜態類中的成員加入static修飾符,便是靜態成員.全部沒有加Static的成員都是非靜態成員.
NSlog@(@"3"); dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(1*NSEC_PER_SEC)),dispatch_get_main_queue(),^{ dispatch_sync(dispatch_get_main_queue(),^{ NSLogy(@"2"); }); }); NSLog(@"1"); 輸出爲:3; 發生主線程鎖死。
@property (copy)NSMutableArray *apples;
兩個問題:一、添加,刪除,修改數組內的元素的時候,程序會由於找不到對應的方法而崩潰.由於 copy 就是複製一個不可變 NSArray 的對象;二、使用了 atomic 屬性會嚴重影響性能 ;github
相同點:
做爲方法的返回類型
不一樣點:
一、instancetype 能夠返回和方法所在類相同類型的對象,id只能返回未知類型的對象。
二、instancetype只能做爲返回值,id能夠做爲參數.
http://blog.sina.com.cn/s/blog_139cc81e90102vvw3.htmlobjective-c
未完 待續設計模式