<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cserwang的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cserwang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cserwang]]></copyright><item><title><![CDATA[控制器与类]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/53065136</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/53065136</guid><author>cserwang</author><pubDate>Mon, 07 Nov 2016 13:52:44 +0800</pubDate><description><![CDATA[UIViewController的生命周期方法！！！

load→initialize→init(initWithNibName)→loadView→viewDidLoad→viewWillApper→viewDidApper→viewWillDisapper→viewDidDisapper→viewWillUnload→viewDidUnload→dealloc
其中viewWillUnl]]></description><category></category></item><item><title><![CDATA[dateFromString永远返回nil的处理办法]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/52211381</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/52211381</guid><author>cserwang</author><pubDate>Mon, 15 Aug 2016 15:15:44 +0800</pubDate><description><![CDATA[NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
    NSDate *stutsCreatedDate = [fmt dateFromString:_created_at];
以上是格式化时间格式为指定格式的代码，但是通过运行发现]]></description><category></category></item><item><title><![CDATA[Xcode7如何添加pch宏文件]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/52095385</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/52095385</guid><author>cserwang</author><pubDate>Tue, 02 Aug 2016 17:07:11 +0800</pubDate><description><![CDATA[1、在工程内Supporting Files文件夹上右键选择new file 在弹出框内如图选择 文件名称为 “项目名-Prefix.pch”





2、选择工程build settings搜索Prefix Header 如图

3、修改红色框框中部分参数Precompile Prefix Header修改为YES           Prefix Header值填写 “项目名]]></description><category></category></item><item><title><![CDATA[OC - KVO]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/52091883</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/52091883</guid><author>cserwang</author><pubDate>Tue, 02 Aug 2016 10:30:01 +0800</pubDate><description><![CDATA[什么是KVO：



KVO,即：Key-Value Observing，它提供一种机制，当指定的对象的属性被修改后，则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后，KVO就会自动通知相应的观察者了。



使用步骤



1. 注册，指定被观察者的属性，

2. 实现回调方法

3. 移除观察（必须移除观察否则后果严重）




]]></description><category></category></item><item><title><![CDATA[IOS 8.1以后的弹出框代码]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51509139</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51509139</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 17:28:51 +0800</pubDate><description><![CDATA[UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:@"你是否确认退出登陆状态" preferredStyle:UIAlertControllerStyleActionSheet];
    UIAlertAction *cancel = [UIAlertAction actionWi]]></description><category></category></item><item><title><![CDATA[openURL]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507935</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507935</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:44:38 +0800</pubDate><description><![CDATA[•UIApplication有个功能十分强大的openURL:方法
-(BOOL)openURL:(NSURL*)url;
-
•openURL:方法的部分功能有
Ø打电话
UIApplication *app= [UIApplicationsharedApplication];
[app openURL:[NSURLURLWithString:@"tel://10086"]];
Ø]]></description><category></category></item><item><title><![CDATA[UIApplication]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507919</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507919</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:44:08 +0800</pubDate><description><![CDATA[•UIApplication对象是应用程序的象征
•
•每一个应用都有自己的UIApplication对象，而且是单例的
•
•通过[UIApplicationsharedApplication]可以获得这个单例对象
•
•一个iOS程序启动后创建的第一个对象就是UIApplication对象
•
•利用UIApplication对象，能进行一些应用级别的操作




]]></description><category></category></item><item><title><![CDATA[通知机制]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507867</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507867</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:42:54 +0800</pubDate><description><![CDATA[•一个完整的通知一般包含3个属性：
Ø- (NSString*)name;//
通知的名称
Ø- (id)object;//
通知发布者(是谁要发布通知)
Ø- (NSDictionary*)userInfo;//
一些额外的信息(通知发布者传递给通知接收者的信息内容)
•初始化一个通知（NSNotification）对象
Ø+ (instancetype)notification]]></description><category></category></item><item><title><![CDATA[通过代码自定义cell(cell的高度不一致)]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507842</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507842</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:37:24 +0800</pubDate><description><![CDATA[1.新建一个继承自UITableViewCell的类
2.重写initWithStyle:reuseIdentifier:方法
Ø添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中)
Ø进行子控件一次性的属性设置(有些属性只需要设置一次,
比如字体\固定的图片)
3.提供2个模型
Ø数据模型:存放文字数据\图片数据
Øframe模]]></description><category></category></item><item><title><![CDATA[使用delegate的步骤]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507838</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507838</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:37:00 +0800</pubDate><description><![CDATA[1.先搞清楚谁是谁的代理(delegate)
●
2.定义代理协议,协议名称的命名规范:控件类名+
Delegate
●
3.定义代理方法
Ø代理方法一般都定义为@optional
Ø代理方法名都以控件名开头
Ø代理方法至少有1个参数,将控件本身传递出去
Ø
4.设置代理(delegate)对象 
(比如myView.delegate=xxxx;)
Ø代理对象遵守协议
Ø]]></description><category></category></item><item><title><![CDATA[Cell的重用代码]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507819</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507819</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:35:13 +0800</pubDate><description><![CDATA[- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath

{

   //1.定义一个cell的标识

     staticNSString *ID= @"mjcell";

   

   //2.从缓存池中取出cell

     UITableVi]]></description><category></category></item><item><title><![CDATA[Cell简介和UITableViewCell的contentView]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507797</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507797</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:34:15 +0800</pubDate><description><![CDATA[•UITableView的每一行都是一个UITableViewCell，通过dataSource的tableView:cellForRowAtIndexPath:方法来初始化每一行
•UITableViewCell内部有个默认的子视图:contentView，contentView是UITableViewCell所显示内容的父视图，可显示一些辅助指示视图
•
•辅助指示视图的作用是显示一个表]]></description><category></category></item><item><title><![CDATA[tableView展示数据的过程]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507729</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507729</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:26:41 +0800</pubDate><description><![CDATA[1.调用数据源的下面方法得知一共有多少组数据
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView;
2.调用数据源的下面方法得知每一组有多少行数据
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)sect]]></description><category></category></item><item><title><![CDATA[NSTimer]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507697</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507697</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:24:46 +0800</pubDate><description><![CDATA[•NSTimer叫做“定时器”，它的作用如下
Ø在指定的时间执行指定的任务
Ø每隔一段时间执行指定的任务
Ø
•调用下面的方法就会开启一个定时任务
+ (NSTimer*)scheduledTimerWithTimeInterval:(NSTimeInterval)ti   target:(id)aTarget

  selector:(SEL)aSelector

  userInfo]]></description><category></category></item><item><title><![CDATA[UIScrollView的常见属性以及使用]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507563</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507563</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:14:56 +0800</pubDate><description><![CDATA[@property(nonatomic)CGPointcontentOffset; 
Ø这个属性用来表示UIScrollView滚动的位置


@property(nonatomic)CGSizecontentSize; 
Ø这个属性用来表示UIScrollView内容的尺寸，滚动范围


@property(nonatomic)UIEdgeInsetscontentInset;]]></description><category></category></item><item><title><![CDATA[UIScrollView无法滚动，可能是以下原因]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507512</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507512</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:12:39 +0800</pubDate><description><![CDATA[Ø没有设置contentSize
ØscrollEnabled=NO
Ø没有接收到触摸事件:userInteractionEnabled=NO
Ø没有取消autolayout功能（要想scrollView滚动，必须取消autolayout）]]></description><category></category></item><item><title><![CDATA[自定义xib步骤]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507494</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507494</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:07:41 +0800</pubDate><description><![CDATA[1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView)
2> 新建一个MJAppView.xib文件来描述MJAppView内部的结构
3> 修改UIView的类型为MJAppView真是类型
4> 将内部的子控件跟MJAppView进行属性连线
5> MJAppView提供一个模型属性
6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型]]></description><category></category></item><item><title><![CDATA[导航navigationItem]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507391</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507391</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:04:24 +0800</pubDate><description><![CDATA[UINavigationItem有以下属性影响着导航栏的内容
左上角的返回按钮
@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;

中间的标题视图
@property(nonatomic,retain) UIView  *titleView;

中间的标题文字
@property(nonatomic,co]]></description><category></category></item><item><title><![CDATA[控制器的创建方法]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51507350</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51507350</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 15:00:39 +0800</pubDate><description><![CDATA[一、通过storyboard创建控制器

    · 先加载storyboard文件
        UIStoryboard *stroyboard = [UIStoryboard storyboardWithName:@“Test” bundle:nil] //Test为storyboard名称

    · 初始化storyboard中的控制器
    1）初始化“初始控制器”]]></description><category></category></item><item><title><![CDATA[自定义Cell的开发步骤]]></title><link>https://blog.youkuaiyun.com/cserwang/article/details/51454788</link><guid>https://blog.youkuaiyun.com/cserwang/article/details/51454788</guid><author>cserwang</author><pubDate>Thu, 26 May 2016 14:58:50 +0800</pubDate><description><![CDATA[1、新建一个继承自UITableView的类
2、重新initWithStyle:reuseeldentifier:方法
    1）首先添加所需要显示的子控件（不需要设置控件的数据和fream属性）
    2）进行子控件一次性的初始化操作
3、添加一个模型属性
4、重写模型属性的seter方法，在这个属性中设置子控件的数据和fream属性]]></description><category></category></item></channel></rss>