<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[objectively的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/objectively</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; objectively]]></copyright><item><title><![CDATA[cookie解密]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/49861831</link><guid>https://blog.youkuaiyun.com/objectively/article/details/49861831</guid><author>objectively</author><pubDate>Mon, 16 Nov 2015 09:43:00 +0800</pubDate><description><![CDATA[一、前言
 
Cookies想必所有人都了解， 但是未必所有人都精通。本文讲解了Cookies的各方面知识，并且提出来了最佳实践。这是笔者在日常工作中的积累和沉淀。
 
二、基础知识
 
1.什么是 Cookies
Cookie 是一小段文本信息，伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。
例如，]]></description><category></category></item><item><title><![CDATA[Wininet、WebBrowser编程中如何管理Cookie]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/49861705</link><guid>https://blog.youkuaiyun.com/objectively/article/details/49861705</guid><author>objectively</author><pubDate>Mon, 16 Nov 2015 09:29:28 +0800</pubDate><description><![CDATA[用VC++访问网页，一般都是用微软提供的Wininet、WinHTTP（基于HTTP协议）或WebBrowser（加载整个网页）。当然还有libcurl之类的第三方类库，因为暂时没接触过，就不说了。

在使用上述三种方式访问网页的编程过程中，默认情况下是由它来管理Cookie，但有时候程序员想手工干预，比如清除Cookie、修改Cookie、添加Cookie。在网上搜索了一下，大概有这么三种方]]></description><category></category></item><item><title><![CDATA[setsockopt、getsockopt详细介绍]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/44920949</link><guid>https://blog.youkuaiyun.com/objectively/article/details/44920949</guid><author>objectively</author><pubDate>Tue, 07 Apr 2015 15:28:31 +0800</pubDate><description><![CDATA[一、 int PASCAL FAR setsockopt( SOCKET s, int level, int optname, const char FAR* optval, int optlen); 
设置套接口的选项。 
s：标识一个套接口的描述字。 
level：选项定义的层次；目前仅支持SOL_SOCKET和IPPROTO_TCP层次。 
optname：需设置的选项。 
opt]]></description><category></category></item><item><title><![CDATA[socket编程的select模型]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/44656055</link><guid>https://blog.youkuaiyun.com/objectively/article/details/44656055</guid><author>objectively</author><pubDate>Thu, 26 Mar 2015 21:14:13 +0800</pubDate><description><![CDATA[在掌握了socket相关的一些函数后，套接字编程还是比较简单的，日常工作中碰到很多的问题就是客户端/服务器模型中，如何让服务端在同一时间高效的处理多个客户端的连接，我们的处理办法可能会是在服务端不停的监听客户端的请求，有新的请求到达时，开辟一个新的线程去和该客户端进行后续处理，但是这样针对每一个客户端都需要去开辟一个新的线程，效率必定底下。

     其实，socket编程提供了很多的模型来]]></description><category></category></item><item><title><![CDATA[运行时出现Stack overflow错误]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/44592057</link><guid>https://blog.youkuaiyun.com/objectively/article/details/44592057</guid><author>objectively</author><pubDate>Tue, 24 Mar 2015 15:10:23 +0800</pubDate><description><![CDATA[大家都知道,Windows程序的内存机制大概是这样的,全局变量(局部的静态变量本质也属于此范围)存储于堆内存,该段内存较大,一般不会溢出; 函数地址、函数参数、局部变量等信息存储于栈内存,VC6中栈内存默认大小为1M,对于当前日益扩大的程序规模而言,稍有不慎就可能出问题。
(动态申请的内存即new出来的内存不在栈中)


即如果函数这样写：
void test_stack_overflo]]></description><category></category></item><item><title><![CDATA[User breakpoint called from code at XXX 问题分析汇总]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/44592035</link><guid>https://blog.youkuaiyun.com/objectively/article/details/44592035</guid><author>objectively</author><pubDate>Tue, 24 Mar 2015 15:07:38 +0800</pubDate><description><![CDATA[分析一，转自独奏的同名Blog

      今天调试程序时在Debug版跳出这个错误，我程序根本没设置断点，而其好像说是我的堆有问题，而编译了个Release版本运行正常，后来google下，查到如下解释：

      说是调试状态下，操作系统用DebugWin32Heap来替代正常的heap分配内存空间。在这个堆上的任何操作debug的堆管理器会检查堆的数据完整性，如果它发现了一个错]]></description><category></category></item><item><title><![CDATA[instancetype和id区别]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/38345147</link><guid>https://blog.youkuaiyun.com/objectively/article/details/38345147</guid><author>objectively</author><pubDate>Sat, 02 Aug 2014 08:20:12 +0800</pubDate><description><![CDATA[一、什么是instancetypeinstancetype是clang 3.5开始，clang提供的一个关键字，表示某个方法返回的未知类型的Objective-C对象。我们都知道未知类型的的对象可以用id关键字表示，那为什么还会再有一个instancetype呢？
二、关联返回类型（related result types）根据Cocoa的命名规则，满足下述规则的方法：1、类方法中，以alloc或]]></description><category></category></item><item><title><![CDATA[UIResponder详解（响应者）]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/38032177</link><guid>https://blog.youkuaiyun.com/objectively/article/details/38032177</guid><author>objectively</author><pubDate>Tue, 22 Jul 2014 08:55:20 +0800</pubDate><description><![CDATA[UIResponder Class Reference

Managing the Responder Chain



[plain] view
 plaincopy






1.- (UIResponder *)nextResponder  

返回接收者的下一个相应，如果没有就返回nil

UIResponder类不自动存储和设置下一个响应者，而是默认]]></description><category></category></item><item><title><![CDATA[UIResponder详解（响应者）]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/38032129</link><guid>https://blog.youkuaiyun.com/objectively/article/details/38032129</guid><author>objectively</author><pubDate>Tue, 22 Jul 2014 08:50:22 +0800</pubDate><description><![CDATA[UIResponder Class Reference

Managing the Responder Chain



[plain] view
 plaincopy






1.- (UIResponder *)nextResponder  

返回接收者的下一个相应，如果没有就返回nil

UIResponder类不自动存储和设置下一个响应者，而是默认]]></description><category></category></item><item><title><![CDATA[View 在响应链中查找属自己的 ViewController（递归查找）]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37900971</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37900971</guid><author>objectively</author><pubDate>Thu, 17 Jul 2014 09:36:25 +0800</pubDate><description><![CDATA[//----- View 在响应链中查找属自己的 ViewController（递归查找）-----
- (id)traverseResponderChainForUIViewController
{
    id nextResponder = [self nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController]]></description><category></category></item><item><title><![CDATA[拷贝 xxx.app [NSBundle mainBundle] 包里的文件到 Documents 目录下]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37900995</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37900995</guid><author>objectively</author><pubDate>Thu, 17 Jul 2014 09:36:07 +0800</pubDate><description><![CDATA[//把 xxx.app 包里的文件拷贝到 Documents 目录下，并指定是否覆盖，YES 则覆盖
- (void)BundleToDocuments:(NSString *)fileName existsCover:(BOOL)cover
{
    BOOL success;
    NSError *error;
    NSFileManager *fileManager = [NSFi]]></description><category></category></item><item><title><![CDATA[hitTest:withEvent:截获子视图消息]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37900943</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37900943</guid><author>objectively</author><pubDate>Thu, 17 Jul 2014 09:35:26 +0800</pubDate><description><![CDATA[@implementation TempView
{
    BOOL isSelfTouche;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    if(isSelfTouche)
       [self removeFromSuperview];
}

#pragma mark - hitTes]]></description><category></category></item><item><title><![CDATA[函数参数传递 “指针的指针” （或是指针的引用）]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37900891</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37900891</guid><author>objectively</author><pubDate>Thu, 17 Jul 2014 09:33:09 +0800</pubDate><description><![CDATA[注：以下讨论都是在ARC模式下

我们在iOS开发中最经常碰到的“引用(reference)”的使用是在error上，比如如下代码





[objc] view
 plaincopy






NSError *error = nil;  
BOOL success = [myContext save:&error];  
if (!success) { ]]></description><category></category></item><item><title><![CDATA[iOS多线程系列（3）GCD（Grand Central Dispatch）]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37523635</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37523635</guid><author>objectively</author><pubDate>Mon, 07 Jul 2014 17:43:22 +0800</pubDate><description><![CDATA[在2011的WWDC上，苹果推出了GCD，从此多线程增加了一种新的方法。GCD要求运行在iOS4.0版本以上或者OS X10.6版本以上。GCD是Grand Central Dispatch的缩写，是一组用于实现并发编程的C接口。GCD是基于Objective-C的Block的特性开发的，基本的业务逻辑和NSOperation很像。都是添加一个任务到一个队列，由系统来负责线程的生成和调度。因为直接]]></description><category></category></item><item><title><![CDATA[iOS多线程系列（2）NSOperation]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37523563</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37523563</guid><author>objectively</author><pubDate>Mon, 07 Jul 2014 17:41:56 +0800</pubDate><description><![CDATA[前面了iOS的NSThread方法来实现多线程，这篇就简单的讲讲NSOperation和NSOperationQueue。

      NSOperation是一个抽象类，定义一个要执行的任务。NSOperationQueue是一个任务队列，帮助对NSOperation所定义的任务进行管理。当任务加入到任务队列后，会自动按照优先级和依赖关系自动运行。

      NSOperation]]></description><category></category></item><item><title><![CDATA[iOS多线程系列（1）NSThread]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37523441</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37523441</guid><author>objectively</author><pubDate>Mon, 07 Jul 2014 17:40:04 +0800</pubDate><description><![CDATA[多线程这个概念的接触是蛮早的时候了，当时还是单核单CPU的时候，Thread这个概念已经出现了，当时比较流行的方案是时间片轮流，线程可以优先级抢占，但一次只能运行一个线程，实际上多线程是不能真正并行处理的，只是宏观上表现的多线程在齐头并进。现在硬件进步了很多，多核的CPU时代来临了，于是线程开始了真正意义上的并行处理，多线程也作为越来越重要的一个部分需要掌握。

        iOS中关于线]]></description><category></category></item><item><title><![CDATA[iOS事件拦截处理]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37522337</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37522337</guid><author>objectively</author><pubDate>Mon, 07 Jul 2014 17:27:09 +0800</pubDate><description><![CDATA[前面分析了一通iOS事件的分发，主要介绍了事件如何找到处理的view，又是如何按照responder chain逐级传递的。这篇文章主要介绍iOS事件的拦截以及特殊处理。

        我们知道事件的分发是由Application到Window再到各级View的，所以显然最安全可靠的拦截地方是Application。这里拦截事件后如果不手动往下分发，则进入hit-test View过程的机]]></description><category></category></item><item><title><![CDATA[iOS事件分发]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37522191</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37522191</guid><author>objectively</author><pubDate>Mon, 07 Jul 2014 17:26:16 +0800</pubDate><description><![CDATA[移动平台上的开发主要关注数据以及数据的处理，事件的处理以及UI。所以事件的分发处理是很重要的一个环节，对于一个平台的优劣来说也是一项重要的参数。如果事件的分发设计的不好，一些复杂的UI场景就会变得很难写甚至没法写。从小屏没有触摸的功能机开始到现在大屏多点触摸的智能机，对于事件的分发处理基本思路都是一样的——链（设计模式中有个模式就是职责链chain of responsibility），只是判定的]]></description><category></category></item><item><title><![CDATA[iOS设备是否越狱的判断代码]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/37520843</link><guid>https://blog.youkuaiyun.com/objectively/article/details/37520843</guid><author>objectively</author><pubDate>Mon, 07 Jul 2014 16:58:01 +0800</pubDate><description><![CDATA[苹果是非常看重产品的安全性的，所以给用户设计了一套复杂的安全机制。这让喜爱自由，崇尚一切开放的程序员们极度不爽，于是越狱就成了苹果和黑客们反复斗法的场所。总体来说，越狱可以让我们随意安装、共享应用，但确实也降低了设备的安全性，会给一些恶意应用提供方便之门。

      有时我们的应用希望知道安装的设备是否已经越狱了，显然，苹果官方不会给出解决方案来的，那么我们怎么办呢？因为越狱后会自动安装c]]></description><category></category></item><item><title><![CDATA[代码手写UI，xib和StoryBoard间的博弈，以及Interface Builder的一些小技巧]]></title><link>https://blog.youkuaiyun.com/objectively/article/details/36704979</link><guid>https://blog.youkuaiyun.com/objectively/article/details/36704979</guid><author>objectively</author><pubDate>Thu, 03 Jul 2014 21:38:07 +0800</pubDate><description><![CDATA[最近接触了几个刚入门的iOS学习者，他们之中存在一个普遍和困惑和疑问，就是应该如何制作UI界面。iOS应用是非常重视用户体验的，可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关系。而随着iOS开发发展至今，可以说在UI制作上大家逐渐分化为了三种主要流派：使用代码手写UI及布局；使用单个xib文件组织viewController或者view；使用StoryBoard来通过单个]]></description><category></category></item></channel></rss>