摘要:
Block是在栈上生成的,所以一般使用copy方法把Block复制到堆上,避免Block被立刻释放。Block会对内部的变量形成强引用,而如果同时该变量又持有这个Block,就会导致循环引用而无法释放,从而导致内存泄露。最常见的就是self持有Block,而又在Block内部调用self的方法或属性... 阅读全文
摘要:
先提供几个文档参考下:官方文档翻译文档参考教程UIStackView 是 iOS 9 中新增的一个视图,用来管理一行或一列视图的组合。虽然UIStackView继承自UIView,但UIView的很多属性和方法对UIStackView并不起作用。相反的,UIStackView新增了几个独特的属性,而... 阅读全文
摘要:
前言最近在思考关于iOS视图架构的一些东西,于是开始纠结MVC、MVVM等架构。由于项目里原来的代码比较乱,日积月累,维护的人也换了又换,可以说到了十分臃肿难以维护的地步。所以借某个机会得以对其进行重新设计。项目里的业务逻辑比较多,也比较乱。所以必须把架构做好,以方便后期的维护。说回视图层架构,这阵... 阅读全文
摘要:
原文来自:coltfoal's website一不小心又总结出了第二个列表,就此罗列一下。[MFMailComposeViewController canSendMail]发送邮件之前最好先判断是否已经设置好邮箱账号,如果已经设置了,则直接弹窗发送,否则可以生成自己的提示框。如果不使用canSend... 阅读全文
摘要:
前言之前接触过iOS上的推送服务,当时做的是在线推送,虽然已经有很多开发商提供集成的推送服务,但作为了解原理的方式也是一个不错的过程。最近打算应用本地通推送的功能,本来以为会和在线推送一样麻烦,又要弄证书,又要提交验证,所以一直没动手。今天稍微了解后,发现本地推送就是很简单的一件事。介绍本地推送是什... 阅读全文
摘要:
这个系列的文章只是简单地把开发过程中的一些技巧总结起来,方便以后查阅。exclusiveTouchexclusiveTouch是UIView的一个属性。Exclusive是“独家”的意思,所以这个方法的作用就是把某个UIView的触碰事件设置为独家事件,即如果多个设置了exclusivetouch的... 阅读全文
摘要:
这篇文章主要来介绍iOS模拟器的几个有趣的小功能。iOS模拟器,顾名思义就是模拟iOS设备。对于苦逼的程序猿来说,一个iOS模拟器大部分时候可以顶的上十几台真机。打开Xcode,在菜单里选择“Xcode->Open Developer Tool->iOS Simulator”打开模拟器。或者可以新建... 阅读全文
摘要:
Xcode6提供的Interface Builder,为iOS界面创建提供了许多方便。但是,任何事物都存在两面性,这里对IB提出了几点思考。一个Storyboard只对应一个UIViewController这样的好处是显而易见的,权责分明,Storyboard负责界面的绘制,而UIViewContr... 阅读全文
摘要:
上次我爬了n多图片,但是浏览的时候有一个问题。 图片浏览器的浏览一般都是按名称排的,而我对图片的命名是按照数字递增的。比如3总是会排在10后面,也就无法快速地浏览图片了。 所以,出于方便自己查阅图片,也出于学习,决定做一个自己的图片浏览器。 目标:浏览目录,通过滚轮不断显示同一个文件夹下的图片,并自定义排序。 步骤0:要实现图形界面,我使用wxPython。 至于如何安装和简单地使用wxpython,可以到网上检索,一大堆资料。 以下步骤默认你已经知道如何生成一个自己的frame。 但是wxPython的文档却比较难找到,其中这两个比较好:wxPython里的类、wxPy... 阅读全文
摘要:
爬取图片可真的是一个可遇不可求的机会。 有需求就会动力。 目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件夹,每个文件夹包含n个链接所对应的文件夹。 步骤1:获得网页的所有链接,访问所有链接,获得链接里的图片地址。 这一步通过上一篇文章的学习,同时写好正则匹配,就可以简单地完成。 步骤2:根据图片地址下载图片。 下载jpg格式的图片其实很容易。1 socket = urllib2.urlopen(url)2 data = socket.read()3 with open(path, "wb") as jpg:4 jpg.write(da... 阅读全文