Swift 中定义单例

什么是单例

单例模式(Singleton Pattern),也叫单子模式,是一种常用的软件设计模式。 在应用这个模式时,单例对象的类必须保证只有一个实例存在。

单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。

如何在 swift 中创建单例

查看更多

分享到 评论

Raspbian安装vscode

vscode是一个跨平台,轻量级,开源免费,具有强大插件支持编辑器,这不是微软的风格。经过长时间的使用,笔者现在已经爱上这款编辑器,之前一直用的是sublime text2, 现在基本舍弃之。

vscode应该是目前为止最适合开发angular的编辑器,安装上相关的插件后会有代码提示,代码检查,代码自动完成,自动模块导入,自动更正等。此外,我还喜欢使用vscode来写markdown文档,写shell scirpt, python, php等。安装相关的插件后,vscode简直是一款神器!

这篇文章暂时不会具体介绍vscode的用法,这里主要是介绍如何在树梅派上安装vscode。

查看更多

分享到 评论

写了个iOS下拉刷新控件

这个控件和LiteAutolayout一样也写了有一段时间了,使用swift实现,尽量做到简单易用,尽可能做到一行代码搞定。

先附上CocoRongPullToRefresh的源码地址:

https://github.com/MellongLau/CocoRongPullToRefresh

Thumbnail

查看更多

分享到 评论

Swift 之访问控制

访问控制对访问你的其他代码源文件和模块部分进行了约束。这个特性允许你隐藏你的代码实现,并且指定通过其可以访问和使用该代码的优选接口。

class,structure 和 enumeration 都可以指定访问级别,当然,property,method,initializer 和 属于这里类型的 subscript。protocol 可以限制到某个上下文,全局变量,变量和函数也可以。

另外,Swift 也提供默认的使用级别给典型的使用场景。确实,如果你编写一款单一目标的 app,你可能根本不需要明确地指定访问控制级别。

查看更多

分享到 评论

Swift 之泛型

泛型代码允许你编写灵活,可以重用适用于任何类型的函数和类型。
大部分的Swift标准库都是用泛型代码编写。Array和Dictionary事实上都是泛型集合。你可以创建Int值的数组,或者String值的数组,以及其他swift类型的数组。Dictionary也是类似的。

查看更多

分享到 评论

终端使用中遇到的问题

文件出现 ^M 问题

^M 是回车符,他是源于 DOS/Windows 的,但是在 Unix 的系统中这样的符号在执行的时候会报错,在使用 vim 查看文件的时候会直接看到^M 而不是换行。

想替换掉^M,换成\r或者\n, 千万不要直接打上符号^M 进行替换,^M 这个符号要使用 ctrl+v & ctrl+m 生成,在 vim 中使用

:%s/^M/\r/g

进行替换所有回车符。

查看更多

分享到 评论

Vim常用操作命令

Vim是非常强大的文本编辑器,熟练使用vim会给使用linux带来很大帮助,现在很多流行的编辑器都以插件的形式支持vim编辑模式,也从另一面说明vim非常的流行。

使用 Vim 有很长一段时间了,感觉就是越熟悉越好用,刚开始用还是比较痛苦的,所以我把一些常用的命令记下来,有了下面这些命令,使用起 vim 就会更得心应手了。

  • 删除
    dd: 删除整行。
    dt+”字符”: 删除当前字符到指定字符,但不包含自定字符。
    df+”字符”: 删除当前字符到指定字符,且包含自定字符。
    di+”括号或者双引号,单引号,方括号等”: 删除当前的成对的括号内的全部字符,不包括括号。
    da+”括号或者双引号,单引号,方括号等”: 删除当前的成对的括号内的全部字符,包括括号。
    cw: 删除单词并切换为 insert 模式。
    ss: 删除当前字符并切换为 insert 模式。

查看更多

分享到 评论

自制自动布局约束开源库Lite Auto Layout

首先,贴上这个库的源码地址:https://github.com/MellongLau/LiteAutoLayout

这个库也写了好长一段时间了,由于最近忙,一直都没时间把它更新好放上来,特别是文档,拖了这么久总算是补全了一点了。至于好不好用,那就见仁见智了,我之前比较习惯用IB拖auto layout的约束,也是根据IB的使用概念来实现的这个库,下面也有提到这一点,所以,个人认为,习惯使用IB来布局的同学应该会比较容易上手和习惯使用吧。

然后就是,如果——

喜欢这个项目? 点击Github 里面的 Star按钮支持我们吧!

示例项目

可以下载 Demo 文件夹下的示例项目运行,下面是运行后的截图。

Demo

这是一个使用 LiteAutoLayout 编写布局约束的登录框界面,所有的约束代码都在下面的代码截图中:

Code

查看更多

分享到 评论

iOS如何跳转到Facebook指定用户界面

第一步,先要检测Facebook是否安装,如果安装就直接跳转到app里面指定的用户主页,否则直接用浏览器打开指定的用户主页网页地址。

1
2
3
4
5
6
7
BOOL isInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]
if (isInstalled) {
// 直接跳转到app里面指定的用户主页。
}
else {
// 用浏览器打开指定的用户主页网页地址。
}

值得注意的是,iOS9+需要的Info.plist里面加上键名为LSApplicationQueriesSchemes加上值:fb

使用下面代码进行跳转:

1
2
NSURL *url = [NSURL URLWithString:@"fb://profile/<facebook id>"];
[[UIApplication sharedApplication] openURL:url];

可以通过这个网站获取到你的Facebook id:http://findmyfbid.com/

分享到 评论

Swift 3.0之下标

类,结构体和枚举都可以定义下标,使用下标可以快速访问集合,列表或者序列的数据成员元素。可以使用someArray[index]来访问Array, 使用someDictionary[key]来访问Dictionary。

一个类型可以定义多个下标。

定义一个get set的下标:

1
2
3
4
5
6
7
8
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}

查看更多

分享到 评论