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