简易扫雷游戏

在北京回深圳的飞机上太无聊了, 然后顺手写了个扫雷, 但是当时没有写完, 现在顺便用 stroyboard 弄了一个简单配置界面. 之后有机会再完善这个 “游戏” 吧~

整个”游戏” 只用了 UIKit, 没有什么高级的组建或者框架.

Read More


让我们细数 iOS 开发中那些坑爹的变量的默认值

1. automaticallyAdjustsScrollViewInsets

automaticallyAdjustsScrollViewInsets 其实是一个很有用的属性, 当 vc 含有 navigationbar 或者 tabbar 的时候, 且他们为不透明状态, vc 就会调整第一个 scrollerView 的 insets 值, 使得这些 bar 不会对 scrollerView 造成遮挡.
而且这个属性的值默认是 true, 然后有得时候就会发生一些奇怪的问题, 比如我的这篇文章 -> 写 PinterestSegement 中发现的一个问题

2. translatesAutoresizingMaskIntoConstraints

iOS 的布局方式3种, 直接设置 frame, Autoresizing, Autolayout. 当 translatesAutoresizingMaskIntoConstraintstrue 的时候, 系统就会自动的将 autoresizingMask “翻译” 成以约束为基础的布局, 而且 translatesAutoresizingMaskIntoConstraints 的默认值是 true

Read More


Objective-C 的类变量

惊闻 OC 支持类变量, 然后用个 demo 测试了一下
发现只是 property 加上了 class 类型, 但是实际的上还是要手写 静态变量和 gettersetter 方法的实现.
所以 Objective-C 的类变量 只是代替 头文件中 gettersetter 方法的声明.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@interface Test : NSObject
@property (class, nonatomic, copy) NSString * name;
//+ (NSString *)name;
//+(void)setName:(NSString *)name;
@end
@implementation Test
@dynamic name;
static NSString *_name = nil;
+ (NSString *)name {
return _name;
}
+(void)setName:(NSString *)name {
_name = name.copy;
}
@end


Android - 通用 Viewholder

在 iOS 开发中基本不会用到 Viewholder 这种神奇的模式, 所以第一次在 android 中看到还是挺懵逼的,感觉有点逗.
而且每次重复的写 viewholder 感觉很不 geek,所以在google 上搜到别人搜到的…..这一个通用的 viewholder 的方法
挺不错的.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ViewHolder {
// I added a generic return type to reduce the casting noise in client code
@SuppressWarnings("unchecked")
public static <T extends View> T get(View view, int id) {
SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
if (viewHolder == null) {
viewHolder = new SparseArray<View>();
view.setTag(viewHolder);
}
View childView = viewHolder.get(id);
if (childView == null) {
childView = view.findViewById(id);
viewHolder.put(id, childView);
}
return (T) childView;
}
}

Read More


用 Node.js 写简易爬虫

爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

说到爬虫一般都会想到 Python,但是比起 Python, 会 Javascript应该更多.
然后刚好我就用 Node.js 写了一个简单的爬虫, 爬取输入的优酷视频的 url 并且读取所需信息在网页上显示出来,并且在终端中用 json 显示.
Github: https://github.com/TBXark/YoukuInfo

Read More


使用泛型优化 UITableviewCell 的重用

在通常情况下我们 tableview 的 datasource 的写法是

1
tableView.dequeueReusableCellWithIdentifier("Iden", forIndexPath: indexPath)

使用这个函数返回的值是一个 UITableView, 当我们使用自定义的 TableViewCell 式要对其进行一次强制类型转换, 如下:

1
tableView.dequeueReusableCellWithIdentifier("Iden", forIndexPath: indexPath) as! TableViewCell

Read More


超快速为自己的 Github 项目创建 Cocoapod 仓库

Long long times ago, 木噶西木噶西, 创建一个 cocoapods 仓库 是相当的麻烦,到底有多麻烦呢, 就是麻烦到我都忘记是怎么创建的了.最近心血来潮就想把自己的开源项目(很水的)都加上 cocoapod.
然后我就发现了一种新的创建 pod 仓库的方法(ps: 其实是久的方法, 但是我不知道而已)

Read More