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)——我所知道的标识符和关键字 原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小小的整 ...
随机推荐
- 常用CSS3
(ಥ_ಥ) 啊啊,我的胃好疼啊.感觉最近胃又开始不舒服了.啊——果然老了呢,想当初,我也是不坏金刚之身来着呢,唉,我的可怜的小胃胃 (ಥ_ಥ) 记录几个已经常见的不能再常见的css3样式. ...
- python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
http://www.cnblogs.com/wangyongsong/p/6750454.html#_label0
- Django+Vue打造购物网站(十一)
第三方登录 微博创建应用,修改回调地址 http://open.weibo.com/authentication 安装第三方登录插件 https://github.com/python-social- ...
- Git让你从入门到精通,看这一篇就够了
简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...
- LoadRunner【第四篇】参数化
参数化的定义及使用场景 定义:将脚本中的特定值用变量替代,该变量值是变化的(注意:这个值是我们自己创建的,不是服务器返回的). 使用参数化: 1.业务考虑,不允许相同信息 2.真实模拟不同用户 3.真 ...
- WS_TABSTOP 与 BS_DEFPUSHBUTTON 第一次使有
关于 WS_TABSTOP,我一直没搞明白,为何加了 WS_TABSTOP ,当按下 Tab 键时,窗口中的控件还是不能自动的切换焦点. 为何 SetFocus(hwnd); 后,虽然按钮已获得焦点, ...
- Codeforces Round #553 (Div. 2)
传送门 A. Maxim and Biology 题意: 给出一个串s,问最少需要多少步操作使得串s包含"ACTG"这个子串,输出最少操作次数: 题解: 枚举每个位置 i,求出将 ...
- Entity Framework入门教程(17)---记录和拦截数据库命令
记录和拦截数据库命令 这一节介绍EF6怎么记录和拦截发送给数据库的查询和操作命令. 1.记录EF发送给数据库命令(DbContext.Database.Log) 以前给了查看EF发送给数据库的命令我们 ...
- 苹果手机iOS11中fixed弹出框中input光标错位问题
最近遇到了一个移动前端的BUG:手机弹出框中的输入框focus时光标可能会错位. 刚开始时我完全不知道错误原因是什么,在电脑上调试时完全没有问题,手机上出现问题时也没有找到规律.后来在网上搜索了大量的 ...
- httpClient4.5 closeableHttpClient用法
HttpClient一 简介1.尽管java.net包提供了基本通过HTTP访问资源的功能,但它没有提供全面的灵活性和其它很多应用程序需要的功能.HttpClient就是寻求弥补这项空白的组件,通过提 ...