Swift 使用 日常笔记
//-------------------
var totalPrice: Int = {
willSet(newTotalPrice) { //参数使用new+变量名且变量名首地址大写
println("准备将totalPrice值(原值为:\(totalPrice))设为: \(newTotalPrice)")
//to do somthing before set. } didSet {
if totalPrice > oldValue {
println("设置后新值比旧值增加了\(totalPrice - oldValue)") } } }
准备将totalPrice值(原值为:)设为:
设置后新值比旧值增加了5 /使用#来把变量名提升了具有外部参数名作用的变量名,这样就不用再写一次外部参数名(在外部参数名与变量名相同时使用)
func setComputerConfig(#cpu:String,disk:String,mem:String,mon:String)
{ } 多参数方法
func addNumbers(numbers: Int...) ->Int {
var totle =
for number in numbers {
totle += number
}
return totle
} 常量参数
func constantParameter(var version: String) -> String {
version = "版本号是:" + version
return version;
}
var version = "4.0.0"
var ver = constantParameter(version)
println(ver)
println(version)
版本号是:4.0.
4.0. //函数作为返回值
func testfunctionReturn(instruction : String) -> (Int,Int) -> Int
{
func Multiplication(a:Int,b:Int) ->Int
{
return a * b
} return Multiplication
} //自动闭包类型
//调用simpleAssert(testNumber % 2 == 0, "testNumber isn't an even number.")
func simpleAssert(condition: () -> Bool, message: String) {
if !condition() {
println(message)
}
} 用来声明的:
“ class, deinit, enum, extension, func, import, init, let, protocol, static, struct, subscript, typealias, var.”
用于子句的:
“ break, case, continue, default, do, else, fallthrough, if, in, for, return, switch, where, while.”
表达式和类型的:
“ as, dynamicType, is, new, super, self, __COLUMN__, __FILE__, __FUNCTION__, __LINE__”
//特殊语境使用的:
“didSet, get, inout, mutating, override, set, unowned, unowned(safe), unowned(unsafe), weak , willSet”
http://blog.csdn.net/fengsh998/article/details/32133809
通知
NSNotificationCenter.defaultCenter().postNotificationName("Notification1", object: nil) private var observer : NSObjectProtocol! observer = NSNotificationCenter.defaultCenter().addObserverForName("Notification1", object: nil, queue: NSOperationQueue.mainQueue(), usingBlock: { (note:NSNotification!) -> Void in
self.contentChangeNotification(note)
});
private extension ViewController {
func contentChangeNotification(notification: NSNotification) {
println("")
var text = btn.titleLabel!.text! as NSString
if text.isEqualToString("打开") {
self.navigationItem.prompt = nil
btn.setTitle("关闭", forState: .Normal) } else {
self.navigationItem.prompt = "测试显示";
//演示1 s 执行
let popTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1.0 * Double(NSEC_PER_SEC)))
dispatch_after(popTime, dispatch_get_main_queue(), { () -> Void in
self.navigationItem.prompt = "测试显示";
});
}
} } GCD
async表明异步运行,block代表的是你要做的事情,queue则是你把任务交给谁来处理了
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.value), ), { () -> Void in
var url = NSURL(string: "http://s.qdcdn.com/cl/10911573,800,450.jpg")
var imgData = NSData(contentsOfURL: url!)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
imageView.image = UIImage(data: imgData!)
}); }); 线程队列,串行队列,会依次执行,
var myQueue = dispatch_queue_create("com.inlee.ce0", DISPATCH_QUEUE_SERIAL) dispatch_async(myQueue, { () -> Void in
println("")
var url = NSURL(string: "http://img.lanrentuku.com/img/allimg/1311/13853799337947.jpg")
var imgData = NSData(contentsOfURL: url!)
dispatch_async(dispatch_get_main_queue(), { () -> Void in
imageView.image = UIImage(data: imgData!)
});
}); dispatch_async(myQueue, { () -> Void in
println("")
var url = NSURL(string: "http://img.lanrentuku.com/img/allimg/1311/13853799337947.jpg")
var imgData = NSData(contentsOfURL: url!)
if (imgData != nil){
dispatch_async(dispatch_get_main_queue(), { () -> Void in
imageView2.image = UIImage(data: imgData!)
}); }
}); dispatch_async(myQueue, { () -> Void in
println("")
var url = NSURL(string: "http://media.vector4free.com/normal/chick.jpg")
var imgData = NSData(contentsOfURL: url!)
if (imgData != nil){
dispatch_async(dispatch_get_main_queue(), { () -> Void in
imageView3.image = UIImage(data: imgData!)
}); } }); 并行队列
Concurrent queue(global dispatch queue):
可以同时运行多个任务,每个任务的启动时间是按照加入queue的顺序,结束的顺序依赖各自的任务.使用dispatch_get_global_queue获得. var myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, )
dispatch_async(myQueue, { () -> Void in
NSThread.sleepForTimeInterval()
println("")
});
dispatch_async(myQueue, { () -> Void in
NSThread.sleepForTimeInterval()
println("")
});
dispatch_async(myQueue, { () -> Void in
NSThread.sleepForTimeInterval()
println("")
}); http://blog.csdn.net/wildfireli/article/details/18668897
dispatch_group_async的使用
var queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, )
var group = dispatch_group_create()
dispatch_group_async(group, queue, { () -> Void in
NSThread.sleepForTimeInterval()
println("")
}); dispatch_group_async(group, queue, { () -> Void in
NSThread.sleepForTimeInterval()
println("")
}); dispatch_group_async(group, queue, { () -> Void in
NSThread.sleepForTimeInterval()
println("")
}); dispatch_group_notify(group, dispatch_get_main_queue(), { () -> Void in
println("完成!")
}); 完成!
map
//map函数可以让我们表达我们想要实现的目标的同时不用关心它背后发生了什么,这可以减轻我们理解代码的难度 let numbers = [,,]
let doubledNumbers = numbers.map {$ * }
println(doubledNumbers)
[, , ]
//--------
let num = Optional()
println(num)
let transNum = num.map {$ * }.map {$ % == }
println(transNum)
Optional()
Optional(true)
//———
func map< U>(transformFunction: T -> U) -> Container< U>
T是当前的元素类型,U是将要返回的元素类型。通过这种方法我们可以实现诸如将一个字符串数组的每个字符串长度映射到一个整型数组中。
//------------
let jsArr = ["abc", "", "n", "klomj"]
let jsArr2 = jsArr.map {$.uppercaseString}
let jsArr3 = jsArr.map {($ as NSString).length}
println(jsArr2)
println(jsArr3)
[ABC, , N, KLOMJ]
[, , , ] swift 异常处理
NSSetUncaughtExceptionHandler(<#CFunctionPointer<NSUncaughtExceptionHandler>#>) NSSetUncaughtExceptionHandler(exceptionHandlerPtr) //———
需要新建一个OC类,桥架该头文件
// volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
//关键字“extern”,表示此函数是外部函数 @interface ExceptinHandler : NSObject
volatile void exceptionHandler(NSException *exception);
extern NSUncaughtExceptionHandler *exceptionHandlerPtr;
@end
#import "ExceptinHandler.h"
@implementation ExceptinHandler
volatile void exceptionHandler(NSException *exception) {
// Do stuff
}
NSUncaughtExceptionHandler *exceptionHandlerPtr = &exceptionHandler;
@end id方法
private struct Constants {
static let sharedManager = LocationManager()
} public class var sharedManager: LocationManager {
return Constants.sharedManager
} //
class var sharedInstance: LibraryAPI {
//
struct Singleton {
//
static let instance = LibraryAPI()
}
// 静态常量的声明
类似OC中 #define
public struct HUDAssets {
public static let rotationLockImage = HUDAssets.bundledImage(named: "rotation_lock")
internal static func bundledImage(named name: String) -> UIImage {
let bundleIdentifier = "com.NSExceptional.PKHUD"
return UIImage(named: name, inBundle: NSBundle(identifier: bundleIdentifier), compatibleWithTraitCollection: nil)!
}
}
调用
HUDAssets.ringerMutedImage public struct Tool {
public static let greenColor = UIColor(red: 35.0/255.0, green: 153.0/255.0, blue: 73.0/255.0, alpha: 0.8)
} 属性的set/get
public var userInteractionOnUnderlyingViewsEnabled: Bool {
get {
return !window.userInteractionEnabled
}
set {
window.userInteractionEnabled = !newValue
}
} private let backgroundView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(white:0.0, alpha:0.25)
view.alpha = 0.0;
return view;
}()
//
private var currentAlbumData : (titles:[String], values:[String])?
if (currentAlbumData != nil) {}
可以改成
if let albumData = currentAlbumData {}
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor(), NSFontAttributeName:UIFont(name: "AvenirNextCondensed-DemiBold", size: 22.0)!]
Swift 使用 日常笔记的更多相关文章
- .Net 转战 Android 4.4 日常笔记目录
.Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建 .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序 .Net 转战 Android 4.4 ...
- 【日常笔记】java文件下载返回数据流形式
@RequestMapping("/downloadFile") @ResponseBody public void download(String uploadPathUrl, ...
- 黑马程序猿————Java基础日常笔记---反射与正則表達式
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...
- .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建
闲来没事做,还是想再学习一门新的技术,无论何时Android开发比Web的开发工资应该高40%,我也建议大家面对移动开发,我比较喜欢学习最新版本的,我有java的基础,但是年久,已经淡忘,以零基础学习 ...
- 初步swift语言学习笔记6(ARC-自己主动引用计数,内存管理)
笔者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/31824179 转载请注明出处 假设认为文章对你有所帮助.请通过留言 ...
- swift 可选类型笔记
晚上十一点半了,看书累了,原本想睡了的,想了想,还是把刚看的总结一下,把这篇笔记写了吧.广州下雨,真特么的冷..好了,废话不说了,说正题说说Swift可选类型. 先定义一个变量: var string ...
- 《从零开始学Swift》学习笔记(Day 29)——访问级别
Swift 2.0学习笔记(Day 29)——访问级别 原创文章,欢迎转载.转载请注明:关东升的博客 访问级别: Swift提供了3种不同访问级别,对应的访问修饰符为:public.internal和 ...
- 《从零开始学Swift》学习笔记(Day 13)——数据类型之整型和浮点型
Swift 2.0学习笔记(Day 13)——数据类型之整型和浮点型 原创文章,欢迎转载.转载请注明:关东升的博客 Swift提供8.16.32.64位形式的有符号及无符号整数.这些整数类型遵循 ...
- 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字
Swift 2.0学习笔记(Day5)——我所知道的标识符和关键字 原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小小的整 ...
随机推荐
- Javascript初识之流程控制、函数和内置对象
一.JS流程控制 1. 1.if else var age = 19; if (age > 18){ console.log("成年了"); }else { console. ...
- mybatis返回结果封装为map的探索
需求 根据课程id 列表,查询每个课程id的总数,放到一个map里 最简单的就是循环遍历,每一个都查询一次网上说mybatis可以返回Map 和 List<Map>两种类型 尝试 直接返回 ...
- MT【281】最大值函数
已知正系数二次函数$ax^2+bx+c=0$有实数根,证明:$\max\{a,b,c\}\ge\dfrac{4}{9}(a+b+c)$ 证明:$\max\{a,b,c\}=\dfrac{a+c+|a- ...
- BATCH+VBS脚本自动执行命令
打开cmd,然后执行run.bat s 1就会执行tmpsw.vbs的内容,1是作为id传进去的参数. run.bat: @echo off set type=%1 set id=%2 :打开一个te ...
- Vim使用技巧:撤销与恢复撤销
在使用VIM的时候,难免会有输错的情况,这个时候我们应该如何撤销,然后回到输错之前的状态呢?答案:使用u(小写,且在命令模式下)命令. 但如果有时我们一不小心在命令模式下输入了u,然后刚输入的一大片代 ...
- Angular7_获取异步方法里面的数据
1.回调函数 getName() { return '张三'; } getAsyncName() { setTimeout(() => { return 'async_张三'; }, ); } ...
- Android app中的so库和CPU架构
一.android目前有几种cpu架构? 早期的Android系统几乎只支持ARMv5的CPU架构,目前支持七种CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MI ...
- Spring Cloud 2-Feign 声明式服务调用(三)
Spring Cloud Feign 1. pom.xml 2. application.yml 3. Application.java 4. Client.java 简化RestTemplate调 ...
- Copley-STM32串口+CANopen实现双电机力矩同步
原来有个CANopen的主站卡,现在没了,只有单片机,用单片机来制作一个CANopen的主站卡貌似不是很难,但是需要时间.无奈仔细看了一个Copley的说明,决定采用CAN口+串口来实现之前的功能. ...
- [JavaScript]ECMA-6 yield语法
概述 yield关键字用于并且仅限于生成器函数(generator)内部,作用是暂停(并返回)/重启(可选修改该栈环境变量)该函数栈环境. 一般语法 调用生成器函数时返回一个可迭代对象,当调用该对象的 ...