一:@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 _dataArray 10 }
- 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 tmpArray 19 }()
八:设置状态栏样式
- 第一步:在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的方式,是不是很简单呢?呵呵!
时间: 2024-10-28 10:28:23