iOS開發-開發總結(五)

來源:互聯網
上載者:User

標籤:

一:@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?


三:閉包:
  • ({()->() in
  • })


四:操作符重載:
  • 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

 

  • infix 
  • associativity
  • precedence 

六 :NSAutoreleasePool實現

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];    int retVal = UIApplicationMain(argc, argv, nil, nil);    [pool release];    return retVal;

 

七:關於懶載入:

  • OC
 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 }
  • Swift

你可以這樣簡單的實現

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
 
  • 第二步:在一個所有介面都繼承的父類裡添加:
  1.   if (IOS8_OR_LATER) { // 判斷是否是IOS8
  2.     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContentanimated:NO];
  3.   }
  九:實用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開發-開發總結(五)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.