共计 13 篇文章

iOS开发过程中优雅的调试数据库

背景 在开发的时候,数据库的操作一直是一个很棘手的问题,后来发现Android下面有一个第三方的库还挺好用的,就模仿它搞了个iOS的,可以方便的通过浏览器查看、添加、删除、修改数据库。 历史状况 我们来回想一下调试的过程: 如果在模拟器中调试: 找到模拟器应用中数据库的文件位置 拷回到一个比较方便打开的地方 安装一个数据库操作软件 打开数据库文件 select/insert/upate/delete... 拷会模拟器应用目录中 运行应用,查看结果 效果不理想,重复1-7步 如果是手机设备, ...

Object-C Two-Stage Creation:alloc、init

在其他语种中例如JAVA,C++,Ruby等这些语言中new是很常见的,但是在object-c中,大家最常见到的和最常用的初始化方法就是[[ClassName alloc] init]而不是[ClassName new] 去初始化对象。 先来看看他们的方法实现: + new { id newObject = (*_alloc)((Class)self, 0); Class metaClass = self->isa; if ...

跨域及跨域访问

什么是跨域 跨域是一个域名的网页去请求另一个域名网页的资源。 这里有一点儿需要注意:跨域并非浏览器限制了发起跨站请求的这种能力,恰恰相反,我们可以发出请求,服务端也可以接收到请求并正常返回数据,只不过在返回之后浏览器会阻止非同源数据(response),从而在控制台打出一系列报错信息。所以我们调试的时候可以看到发出的请求和接收到的返回数据但是控制台报错。 哪些情况算跨域 下面这些情况都算跨域: 主域不同(www.baidu.com访问www.google.com) 主域相同,子域不同(a.baidu.com访问b.baidu.com) ...

【译】在应用的icon上加上编译相关信息

加那些信息 版本号 代码分支名字 最后一次commit的hash值 版本号 我们可以使用PlistBuddy工具直接从项目文件info.plist中取出版本号 version=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}"` (当然了,你可以通过这个工具取出info.plist中的任何值,把CFBundleVersion改为其他的key就行了,key值可以在xcode中查看) 代码分支名字和commit的hash值 这两个值我们可以通过git的命令行git rev-parse来获取 commit=`git ...

github项目语言展示

放了个项目在github上面,发现语言展示有问题。看了下,github主要使用Linguist来检测使用的是哪种语言,然后按照使用语言代码数量的多少来确定该项目为哪种语言的项目。 解决起来也方便,使用.gitattributes就可以了: echo "*.* linguist-language=Objective-C" > .gitattributes 然后提交就可以了。 ...

UINavigationController在pushViewController之后做一些操作

经常遇到pushViewController之后需要做一些操作的情况,官方文档没提供接口这么处理,理论上是可以的,那具体的操作方式就是用CATransition把pushViewController包起来,然后在设置一个complete block。 [CATransaction begin]; [[self navigationController] pushViewController:viewController animated:YES]; [CATransaction setCompletionBlock:^{ //do something }]; [CATransaction commit]; 当然也可以使用category添加一个方法来做这个事情: @interface UINavigationController (complete) - (void) ...

Flipboard 在 iOS 上怎样播放 GIF 动画

本文翻译自:http://engineering.flipboard.com/2014/05/animated-gif/ 原作者:Raphael Schaad 译者:@nixzhu =============================== Flipboard 一直谋求的是“烹饪原始Web”并将其转化为如杂志般优雅的东西。我们考虑到许多细节——从文章的排版到相片的布局——以尽可能忠实地展现内容的本质。 而对于 GIF 来说,我们想让它们在我们的应用里自动播放。自动播放是动态 GIF ...

GCD 深入理解:第二部分[转载]

本文翻译自 http://www.raywenderlich.com/63338/grand-central-dispatch-in-depth-part-2 原作者:Derek Selander 译者:Riven、@nixzhu 前半部分由 Riven 翻译,但他由于太忙而搁置,后由 NIX 整理校对并翻译后半部分。 ============================== 欢迎来到GCD深入理解系列教程的第二部分(也是最后一部分)。 在本系列的第一部分中,你已经学到超过你想像的关于并发、线程以及GCD 如何工作的知识。 ...

linux vpn client 使用

使用方法: sudo pptpsetup --create tunnelname --server server地址 --username xxx --password xxx --encrypt --start 连接成功: Using interface ppp0 Connect: ppp0 <--> /dev/pts/1 CHAP ...