標籤:
一:@autoclosure將一段代碼塊活著一句運算式自動的封裝成一個閉包
func logIfTrue(predicate: () -> Bool) { if predicate() { print("True") }}
調用
- logIfTrue({return 2 > 1}) 簡寫:logIfTrue{2 > 1}
在predicate加上@autoclosure調用的時候就可以省略{}直接使用logIfTrue(2>1)
二:??的定義:
- func ??<T>(optional: T?, @autoclosure defaultValue: () -> T?) -> T?
三:閉包:
四:操作符重載:
- func +(left: Vector2D, right: Vector2D) -> Vector2D { return Vector2D(x: left.x + right.x, y: left.y + right.y)
- }
五:錯誤-Operator implementation without matching operator declaration
因為沒有對操作符進行聲明
- infix operator +* { associativity none precedence 160
- }
六 :NSAutoreleasePool實現
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal;
七:關於懶載入:
1 @property (nonatomic, strong) NSArray *dataArray; 2 3 //重寫get方法 4 - (NSArray *)dataArray 5 { 6 if (nil == _dataArray){ 7 _dataArray = [NSArray array]; 8 } 9 return _dataArray10 }
你可以這樣簡單的實現
1 //1.分析 NSArray 是一個閉包的傳回值,而這是一個沒有參數的閉包2 lazy var dataArray:NSArray = {3 return []4 }()5 6 //2.也可以寫成這樣7 lazy var dataArray:NSArray = {8 return NSArray()9 }()
但是我們一般都是這麼載入一些資料
1 //3.從plist檔案載入 2 lazy var dataArray:Array<XWWine> = { 3 let winePath = NSBundle.mainBundle().pathForResource("wine.plist", ofType: nil)! 4 5 let winesM = NSMutableArray(contentsOfFile: winePath); 6 7 var tmpArray:Array<XWWine>! = [] 8 9 for tmpWineDict in winesM! {10 11 var wine:XWWine = XWWine.wineWithDict(tmpWineDict as! NSDictionary)12 13 tmpArray.append(wine)14 }15 16 print("我就運行一次")17 18 return tmpArray19 }() 八:設定狀態列樣式
- 第一步:在info.plist中添加一個欄位:view controller -base status bar 設定為NO
- if (IOS8_OR_LATER) { // 判斷是否是IOS8
- [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContentanimated:NO];
- }
九:實用KVC方式修改文字框(UITextField)內部placeholer的屬性(後面我們會說到使用自訂UItextView的方式實現)
textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; [textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];
這裡是使用了KVC的方式,是不是很簡單呢?呵呵!
iOS開發-開發總結(五)