iOS笔记(17)

#iOS读写文件

序

由于iOS App的机制和限定,我们在App里面的权限就仅限于App内部。这个打包好的内部称为沙箱。沙箱有利有弊。我觉得这个世界上没有绝对的好坏。虽然沙箱的作用限制了一些功能的实现。但是也确保了iPhone的安全机制。对于普通用户来说我觉得的利大于弊的。(MAS上架的软件也接受这一约束)

第一步 路径

不管是读文件还是写文件我们都要需要知道文件的位置。这个位置在iOS里面就是沙箱的Document文件夹的位置。关于沙箱里面各个文件夹的功能和作用。Apple的某文档里面写的很清楚建议Google以后详细查看(懒得去找来贴了)。获取代码如下:

1
2
NSArray  *paths              = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSDocumentDirectoryz这个参数你点过去可以找到一堆类似的定义比如常用的NSLibraryDirectory,NSApplicationDirectory。这样就可以直接获取到对应的文件夹路径。其他的你照抄就好。想知道意思就点过去看呗。其实看变量名也可以猜测一二。

1
NSString *filePath = [documentsDirectory stringByAppendingString:@"/hello.txt"];

然后我们加上我们文件名字构成一个完整的路径。注意文件名字前有一个/。

这样我们就获得一个文件路径了。

Read more

iOS笔记(16)

配置自己的CocoaPods库

序

默认安装的cocoapods确实很好用,可是毕竟自己会写一些库和修改一些第三方库来用。所幸cocoapods确实是一个神器。他可以定义自己的库来用。
如何安装Cocoapods,请参考这篇

Read more

iOS笔记 (15)

Mogenerator的初级使用

什么是Mogenerator

最近在用Core Data来进行开发。Core Data其实封装的很好了。把存储底层都屏蔽了(sqlite,xml,内存)。不管是用那种方式存储下来。用Core Data都是在操作对象了。但是Core Data一套东西下来,单是学习就学习的泪流满面。天资有限,只能找一些看上去更简单的第三方类库来使用。

github上找了很久,最后在使用的是MagicalRecord。不为其他,只是用起来很爽。特别是目前升级到了2.1版本以后,保存的方法名字不那么逆天了。更是好用多了。

而Mogenerator是什么东西呢。

它漂亮的主页上是这样写的:

mogenerator为你定义了的Core Data生成默认的数据类。与xCode不一样的是(xCode一个Entity只生成一个NSManagedObject的子类),mogenerator会为每一个Entity生成两个类。一个为机器准备,一个为人类准备。为机器准备的类一直去匹配data model。为人类准备的类就给你轻松愉快的去修改和保存。

Read more

简单配置PonyDebugger

前言

iOS的Debug 系统在github上还是有不少。 PonyDebugger是看上去比较牛气的一个。尝试一下

Logo

PonyDebugger

可以监控网络

NetworkTrafficDebugging

还可以查看Core Data对象

CoreDataBrowser

view的层级查看

ViewHierarchyDebugging

这种好东西。 让我们快速开始吧。

Read more

iOS笔记 (14)

使用CocoaPods

序

在iOS开发中,经常性的引用第三方开源的库。github上大量的库为我们开发iOS提供了强大丰富多样的资源。从新手一直过来的我们,面对使用越来越多的第三方库。手足无措。CocoaPods的出现使得一切变得Hacker起来。使用CocoaPods一定会让每次copy文件到项目的你喜极而泣的。

Read more

iOS笔记导航

iOS笔记导航

说明

发现我的笔记是越来越多了(混蛋,才10几篇而已这种能叫多)XD. 查看起来不是很方便。所以,我预见性的写一篇blog来导航一下。方便大家(其实是自己吧,混蛋)查看。

Read more

iOS笔记 (13)

UIViewController的一些事儿

序

这篇主要是想写 Contaner View Controller。然后才好写我计划里面的下一篇讲UIStoryboardSegue的blog。

先贴一个链接 Container View Controller.他写的很好,算是中文blog里面我见过写 Container View Controller最好的一篇blog。

另外一篇中文blogUIViewController的误用

然后是apple的官方文档

UIViewController Class Reference

View Controller Programming Guide for iOS

Read more

iOS笔记 (12)

Block简单使用

序

这篇blog主要想介绍这么用block做回调。因为跟之前的是想关联的。

keynote

这图中的Controller和View我之前已经讲过Delegate和Traget-Action了。Data source和Delegate差不多。有机会再TableView里面详细说说。当然,按照计划我这次要写block的回调。

Read more

iOS笔记 (11)

关于Target-Action设计模式

序

上回提到了在iOS的MVC中。delegate其实是一种View跟Controller直接交流的方式。

keynote

这次我们来说Target Action这种View跟Controller的交流方法。

Read more

iOS笔记 (10)

关于回调函数——Delegate的那些事

序

iOS笔记也终于迈入两位数之列。在此里程碑下。明显要拿出点诚意来好好写一写。所以,我决定写一下早已改写的delegate。

什么是回调函数

我们先不管delegate,我们先来说说回调函数(callback).wiki的解释在这里。

回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。

好我来说所自己理解过后的解释:

  1. 如果不用回调函数可不可以写程序。(明显可以)
  2. 那为什么要用回调函数这种东西。(现代开发软件过程中其实一直在强调一些相同的东西:抽象、复用)
  3. 复用是为了提高生产效率。提高生产效率,才能创造更大的价值。
  4. 怎么复用——抽象。只用抽象出来的东西才有复用的价值。
  5. 从代码量各种角度来看,回调似乎是复用代码了。但是回调不仅仅如此。更大的作用是解耦。
  6. 解耦简单说来就是让程序结构更好,更容易读,更容易修改,更容易修改的其中一个基本方法。
  7. 回调怎么解耦。A做一把椅子,但是步骤很多。其中一个步骤上漆应该是B来做。因为B是专门做上漆(B有油漆,有刷子,有技术。B持有上漆这个步骤最佳实践)。正确的方法肯定不是A自己去买油漆刷子把这个步骤做了。而是叫B来把这个步骤做好。然后A继续组装椅子。直到椅子做好。

扯了这么多。其实就是wiki上解释的哪些而已。如果还不明白,再看一次wiki。再多写写代码吧。

Read more