自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 资源 (3)
  • 收藏
  • 关注

转载 iOS 9 适配系列教程

Demo1_iOS9网络适配_改用更安全的HTTPSiOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL。采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2。服务器因此需要更新,以解析相关数据。如不更新,

2016-01-29 01:44:34 379

转载 弧度 和 角度的理解, 以及相互转换

这两天在看同事写的四叉树代码,其中用到了孤度和角度之间的转换,所以转载此文章进行了学习 2009-12-01弧度与角度的关系一、角的两种单位 “ 弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。    在flash里规定:在旋转角度(rotation)里的角,以“度”为单位;在三角函数里的角要以“弧度”为单

2016-01-26 19:17:37 1950

转载 SVN 一次性提交多个目录中文件的方法

情况一:将项目中未加入版本控制的文件提交到版本库。 在使用WINDOW下的SVN客户端工具时,在提交一个项目的文件时,如果有未加入版本库的文件,这时可以先将未加入的文件选中,然后一起提交。 但在LINUX命令行中,如果一个项目中新创建了一个文件new.php,那么我们可以使用如下命令来进行版本的提交。 ~@bash svn add new.php ~@bas

2016-01-24 16:21:43 944

转载 sqlite第三方类库:FMDB使用

本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发过来,供大家参考原文地址:2NSString *documentDirectory = [paths objectAtIndex:0];4FMDatabase *db = [FMDatabase databaseWithPath:dbP

2016-01-23 18:23:55 443

转载 iOS开发之宏的深度学习

宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译 优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似 乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加。 如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的

2016-01-17 13:48:46 428

转载 有的客户端密码用MD5加密,那在后台是如何判断相等才能登陆服务器的?

用户所输入密码再用md5把密码再加密一次,再跟数据的密码比对!数据库中存的是md5加密过的数据 人是看不懂的。。用户输入密码后,后台程序通过用户输入的密码 进行md5加密 得到人看不懂的东西后 和数据库中的那个同样看不懂的东西做对比,如果一致 则表示通过验证。。。相等就是if(value== Md5(User.Password)){....}这类判断。当然

2016-01-17 00:34:21 1588 1

转载 关于UIWindow的一点儿思考

UIWindow的一点儿思考  每一个IOS程序都有一个UIWindow,在我们通过模板简历工程的时候,xcode会自动帮我们生成一个window,然后让它变成keyWindow并显示出来。这一切都来的那么自然,以至于我们大部分时候都忽略了自己也是可以创建UIWindow对象。  通常在我们需要自定义UIAlertView的时候(IOS 5.0以前AlertView的背景样式等都不能换)我

2016-01-16 21:31:50 261

转载 iOS平台XML解析类库对比和安装说明

在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢?解析 XML 通常有两种方式,DOM和 SAX:DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树

2016-01-16 13:12:44 282

原创 循环引用的问题...

main.m#import "Car.h"#import "Person.h"#import int main(int argc, const char * argv[]) { @autoreleasepool { Person * p = [[Person alloc] init]; Car * car = [[Car alloc] init]; //@class 只是ob

2016-01-11 07:04:32 264

转载 面向对象----浅述对象之间的关系

对象之间的关系:依赖(需要某种服务),关联(对象间有某种对应关系),聚合,组合,继承...依赖:对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。 依赖一般情况下是以下几种情况之一:a、ClassA中某个方法的参数类型是ClassB;  这种情况成为耦合;b、ClassA中某个方法的参数类型是ClassB的一个属性

2016-01-10 19:15:03 593

原创 回调函数...

#include char * postman(char * number, char * address) { printf("到%s这个地点取东西, 给%s客户发短信\n", address, number); return "东西我取到了";}//回调函数, 指针函数作为参数的函数,//预先要知道 想要调用的方法的 [返回值 & 参数类型和个数],之后写一个符合格式的指针

2016-01-10 07:33:58 249

原创 删除Target 重名的问题...

2016-01-10 06:44:51 272

原创 swift 2.0 字符串操作...

//: [Previous](@previous)import Foundationimport UIKit/* String 结构体,效率比对象高,一般推荐使用String NSString 继承NSObject*/var str:String = "你好世界"//支持遍历for c in str.characters { print(c);}//

2016-01-09 14:39:34 322

原创 指针的指针...

int a[5] = {1, 2, 3, 4, 5}; int * ptr = (int *)(&a + 1); printf("(ptr - 1)=%p\n", (ptr - 1)); printf("%d,%d", *(a + 1), *(ptr - 1)); // a像排长 能指士兵 // &a是连长 只能指连长 // &a+1 指向下一个连长 //因为指针移动是按

2016-01-09 14:37:43 181

转载 typedef和define的作用域

typedef:如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;如果放在某个函数内,定义域就是从定义开始直到该函数结尾;#define:不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。如:typedef …//此处开始到文件结尾#define …//此处开始到文件结尾int negate(int num){…  

2016-01-09 04:04:35 1444

原创 [对象 performSelector:SEL withObject:id withObject:id]; 只有2个参数,而且是对象参数

待编辑

2016-01-08 10:41:29 329

原创 对象方法响应判断...类方法没得判断...respondsToSelector instancesRespondToSelector | instanceMethodForSelector

#import "Student.h"#import int main(int argc, const char * argv[]) { @autoreleasepool { Person * p = [Person new]; Student * s = [Student new]; Student * s1 = [Student new]; if ([p respon

2016-01-08 10:38:17 673

原创 动态类型判断...| -isKindOfClass: -isMemberOfClass: +isSubclassOfClass

2016-01-08 09:01:59 421

原创 @synthesize & @property Xcode 4.4之前...

main.m#import "Person.h"#import int main(int argc, const char * argv[]) { @autoreleasepool { Person * p = [[Person alloc] init]; p.age = 18; NSLog(@"%d",p.age); [p test]

2016-01-08 07:25:51 479

转载 ios之"performSelector may cause a leak because its selector is unknown"警告原因及其解决办法

问题描述项目中使用到了从字符串创建选择器,编译时发现警告:"performSelector may cause a leak because its selector is unknown"(因为performSelector的选择器未知可能会引起泄漏),为什么在ARC模式下会出现这个警告?经过搜索后,在Stackoverflow上发现了一个令人满意的答案。见 http:/

2016-01-08 05:12:13 301

转载 Object_c底层细节

首先我们来看一下c语言中的struct的内存表示:typedef struct intStruct{  int i;}intStruct;结构体在内存中的表示为:00 00 00 0A如果我们简单的定义一个int并赋值,这个int在内存中的表示为:int i = 10;00 00 00 0A

2016-01-08 04:25:39 291

转载 Objective-C isa 指针 与 runtime 机制

一.isa指针要认识什么是isa指针,我们得先明确一点:在Objective-C中,任何类的定义都是对象。类和类的实例(对象)没有任何本质上的区别。任何对象都有isa指针。那么什么是类呢?在xcode中用快捷键Shift+Cmd+O 打开文件objc.h 能看到类的定义:可以看出:Class 是一个 objc_class 结构类型的指针, id是

2016-01-08 04:17:17 197

原创 多态的条件...

多态的条件: 有继承关系, 有方法重写 , 父类的声明变量指向 之类对象. // 代码体现: 用父类类型的指针指向 子类对象, 多态.Animal * animal = [[Dog alloc] init];

2016-01-08 02:29:37 311

转载 成员变量作用域范围...

成员变量的作用范围: @public:在任何地方都能直接访问对象的成员变量 //以指针方式直接访问 @private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法 @protected:可以在当前类及其子类对象方法中直接访问(系统默认下是用它来修饰的) @package:在同一个包下就可以直接访问,比如说在同一个框架注意: 无论父类是

2016-01-07 15:47:19 1144

转载 何时用Delegate和何时用Block?

公共接口,方法较多也选择用delegate进行解耦 iOS有很多例子比如最常用tableViewDelegate,textViewDelegate 异步和简单的回调用block更好 iOS有很多例子比如常用的网络库AFNetwork,ASIHTTP库,UIAlertView类。 都是为了在具体的实现Delegate或Block中再进行处理,属于策略模式,具体算法在具体算法类

2016-01-07 13:51:23 920

转载 OC面向对象—继承 & 组合

OC面向对象—继承一、基本概念程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量)。 在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类。继承的好处:(1)抽取出了重复的代码(2)建立了类和类之间

2016-01-07 13:49:24 297

转载 ios开发中类方法与self的注意点 与实例方法区别

Objective-C里面既有实例方法也类方法。类方法(Class Method)有时被称为工厂方法(Factory Method)或者方便方法(Convenience method)。工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在其他的语言里面类方法有的时候被称为静态方法。注意点一:类方法1,类方法可以调用类方法。2,类方法不可以调

2016-01-07 07:42:32 266

原创 declare & define 区别

declare  define 구별14. 선언(declare)과정의(define)에 대해상세히 설명하고, 잘못사용된 선언과 정의에대한 에러메시지를 기술하시오. 선언은 특정 함수사용하겠다고 시스템에 먼저알리는 역할을 하는명령을 말하고정의는 선언된 함수가어떠한 역할을 수행하도록명령을 주는 것을말한다. -

2016-01-07 05:59:31 877

转载 类是一个数据类型,类存在内存中的什么地方??

类在定义的时候是没有为它分配空间的,仅仅将类所定义的数据结构信息保存下来;因为类也是一种数据类型,就像int,我们没有定义该类型的变量的时候它是不会占用内存的。当我们声明一个类的对象(或其引用)的时候,计算机才会分配存储空间出来。计算机内存一般分为静态数据区、代码区、堆栈区。数据类型分为基本数据类型和复杂数据类型,基本数据类型有byte,bool,char,int,long,flo

2016-01-07 05:28:05 2919 1

转载 OC 类的设计时,什么情况用类方法,什么时候用对象方法啊?怎么设计才最合理

1)我自己的标准是:类方法(+)应该是对整个模型层面的操作,实例方法(-)是对某单个模型的操作。例如有一个朋友圈类,发布朋友圈或者加载我的朋友圈应该是封装成类方法,对某一条朋友圈评论或赞应该封装成实例方法。又如有一个用户类,请求附近的用户,应该写成类方法,更新当前用户的资料,应该写成实例方法。2)工具类,基本不需要访问任何成员变量的时候用类方法。主要

2016-01-07 05:17:10 1315

转载 iOS NSLog去掉时间戳及其他输出样式

iOS NSLog去掉时间戳及其他输出样式1.一般项目中我的NSLog会在Prefix.pch文件添加如下代码,已保证在非调试状态下NSLog不工作#ifdef DEBUG#define NSLog(...) NSLog(__VA_ARGS__)#else#define NSLog(...)#endif2.在项目中如果没做任何处理的话会输出如下信息,前面有一个时间戳2014

2016-01-07 02:46:03 905

原创 oc的try catch & NSError ....

待编辑...

2016-01-07 02:08:05 509

原创 结构体 char * name & char[10] ...

#include #include int main(int argc, const char * argv[]){ struct student1 { char * name; int age; } students1[5]; struct student2 { char name[10]; int age; } students2[5]; char * na

2016-01-06 11:57:05 1323

原创 结构体的数组成员变量对齐

#pragma pack 默认值 通常是8#pragma pack规定的对齐长度,实际使用的规则是:结构,联合,或者类的数据成员,第一个放在偏移为0的地方,以后每个数据成员的对齐,按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。也就是说,当#pragma pack的值等于或超过所有数据成员长度的时候,这个值的大小将不产生任何效果。而结构整体的对齐,

2016-01-06 11:36:33 1946

转载 C语言结构体的对齐原则

Q:关于结构体的对齐,到底遵循什么原则?A:首先先不讨论结构体按多少字节对齐,先看看只以1字节对齐的情况:#include #include #define PRINT_D(intValue) printf(#intValue" is %d\n", (intValue));#define OFFSET(struct,member) ((char *)&((struct *

2016-01-06 06:47:27 153

原创 结构体中的 char *name & char name[20]

struct student { char * name; int age; } students[5]; struct student { char name[20]; int age; };一个是字符串指针 & 字符数组...因为是指针 需要初始化, 指针本身没有指向任何一个内存空间, 系统分配一

2016-01-06 06:45:01 4393

原创 内存泄露... free ...#include <stdlib.h>

int * p = (int *)malloc(100) 当p指向别的控件 或者 NULL的时候 堆区里申请的(int *)malloc(100) 并没有释放, 当使用别的程序使用指针 访问该内容的时候 就能随便看了, 这就造成了泄露...如果释放了的话, 表示告诉系统这部分内存空间可以使用了, 系统会安排别的数据到此内存空间, 这样里面的数据就会被打乱, 即便别的程序使用指针来访问 也看

2016-01-06 02:20:11 230

原创 malloc & calloc & realloc ...

#include #include #include int main(int argc, const char * argv[]){#if 0 // malloc 返回值是 void * , 所以每次使用都得强制类型转换...略坑... // 怎么在已经静态分配的 数组上增加 大小呢>>>??? 可以, 使用 realloc // int * p = (int *)malloc(

2016-01-06 02:04:50 153

转载 静态分配和动态分配内存的区别

要弄懂这个问题,首先你得知道静态和动态指的是什么。个人觉得卡耐基上的解释很经典:     “The word static refers to things that happen at compile time and link time when the program is constructed—as opposed to load time or run time when th

2016-01-06 01:01:22 184

原创 内存管理的概念和内存分区...

编译时 & 运行时???1、编译:依赖于编译器,英文是compile, vc中这一过程是将源代码转换成目标文件,如.obj文件,.rc文件等。2、生成:指的是链接的过程,英文是build.依赖于链接器. vc中在这一阶段将所有的目标文件和所有需要用到的组件组合成一个整体,例如需要生成的是windows系统下的PE可执行文件,链接器会依照特定格式将目标文件组合,最后生成PE格式的.exe

2016-01-06 00:49:26 263

Groovy入门经典.pdf

Groovy入门经典.pdf Groovy入门经典.pdf Groovy入门经典.pdf

2018-01-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除