自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 super关键字

@implementation Son : Father    - (id)init    {        self = [super init];        if (self) {            NSLog(@"%@", NSStringFromClass([self class]));            NSLog(@"%@", NSStringFro

2017-07-26 22:09:28 266

原创 Runloop

学过操作系统的都知道,一个线程对应一个消息队列,iOS里消息队列被叫做Runloop,但是,runloop比消息队列做的事多得多。正常情况下,线程执行完任务(消息队列里的任务)就会自动退出,就main函数而言,他顺序执行完代码后就会return,但一个应用在其没有任务时也不会退出,当有事件时他会立马去执行,就像随时待命一样。这就是runloop的作用。简而言之runloop就是让线程一直活着。

2017-07-26 21:50:20 297

原创 iOS应用生命周期

main.mintmain(intargc, char * argv[]) {   @autoreleasepool {        return UIApplicationMain(argc, argv,nil,NSStringFromClass([AppDelegateclass]));    }}main函数的

2017-07-26 21:45:20 352

原创 可变参数

在看博客的时候看到了这个:NSArray * @[objects,...]这是个带可变参数的方法。有时我们实现一个方法时不能确定调用它时要传进来几个参数,多了少了都会产生错误,这时可变参数就能体现出他的优点,用三个点代替不确定的参数,调用时就可以传任意个数参数值。我们先来说一下参数的存储,函数(方法)参数是以数据结构:栈的形式存取,从右至左入栈。首先是参数的内存存放格式:参

2017-07-26 21:34:07 385

原创 HTTP

万维网(www):大规模的,联机式的信息储存所。超文本是万维网的基础。万维网里存储了大量的文本(媒体)资源,超文本,通过一个链接得到一个文本。http,超文本传输协议,是应用层协议,http规定了万维网客户程序和服务器程序之间传输文本、交互要遵守的协议http特点:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、H

2017-07-26 21:06:03 813

原创 NSString的内存管理

NSString引用计数很特殊大多数情况下string的retainCount都是无限大的数。这是因为,字符串创建出来不是在堆上的,而是在常量区。常量区只要值相同,就是同一块内存。常量区的值在APP结束时才会释放,指向这块内存的指针不受引用计数限制。下面有三种情况:情况一: NSString*Str1 = [NSStringstringWithFormat:@"a%d",11]

2017-05-04 11:17:50 373

原创 iOS 属性

属性是结构体对象,编译期,编译器自动合成属性的get,set方法,并向类结构体里添加  “_属性名”  实例变量。类对象用.语法访问属性时调用的是ge方法,_属性名访问时访问的是实例变量。特性:原子性:不同线程不能同时读写读写权限内存管理语义:(属性与类对象之间的协议)                         assign数字类型(如 CGFloat,NSInteg

2017-03-18 17:12:16 398

原创 iOS autorelease

autorelease是一个池子pool,声明auto的对象被放在这个pool里,用With创建的对象被创建出来时引用计数就是1,再有一个指针变量指向它,引用计数就是2,当返回这个变量所在的函数时,变量被释放,对象的引用计数-1,但还是1,我们知道,当引用计为0时,对象才会自动释放,aotoreleasepool的作用就是,当pool  drain时,里面的对象引用计数-1,为0的释放。

2017-03-18 17:08:06 549

原创 __weak

1、weak修饰符变量持有的对象必须是注册到autoreleasepool里的对象,因为,weak变量对对象是弱引用,通过weak变量访问对象时,这个对象可能已经被释放了,注册到autoreleasepool里,@autoreleasepool结束之前能保证对象一直存在。2、__weak 变量有一个特性就是它不会影响所指向对象的生命周期3、__weak变量所指向的对象被释放时,__we

2017-03-18 17:06:57 1070

原创 xcode问题及解决

Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式。如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。添加标签的方法:打开:你的target -> Build Phases -

2017-01-15 14:49:14 343 1

原创 alloc和allocWithZone

之前做项目的时候见过这样一个方法创建单例:static MyGizmoClass *sharedGizmoManager = nil; + (MyGizmoClass*)sharedManager { if (sharedGizmoManager == nil) { sharedGizmoManager = [[super allocWithZone:NUL

2017-01-15 14:47:42 495

原创 C++成员变量初始化顺序

1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。2、如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。3、注意:类成员在定义时,是不能初始化的

2017-01-15 14:47:05 2452 1

原创 简单了解Block

block一般作为回调函数,形式:int (^blk_t)(int)=^int (int count){return count+1;},对应的是^ 返回类型(参数列表){表达式};用typedef如下:typedef int (^blk)(int );blk elk_t=^(int count){return count+1};一、截获变量bloc

2017-01-15 14:46:18 345

原创 存储空间划分

C++的内存划分为栈区、堆区、全局区/静态区、字符串常量和代码区。栈区:由系统进行内存的管理。说明:主要存放函数的参数以及局部变量。栈区由系统进行内存管理,在函数完成执行,系统自行释放栈区内存,不需要用户管理。整个程序的栈区的大小可以在编译器中由用户自行设定,默认的栈区大小为3M。 全局/静态区:全局、静态数据存放在一起的,初始化的全局变量和静态变量是在一起的。

2017-01-15 14:45:29 1493

原创 初识GCD

进程:一个可执行的程序任务:一块可执行的代码线程:指的是一个独立的代码执行路径,线程是代码执行路径的最小分支串行和并行:串行是一次只能执行一个任务,并行是一次能执行多个任务并行是CPU的多核芯同时执行多个任务  并发是单核CPU交替执行两个任务GCD中的dispatch queue是FIFO任务队列,一个任务可以是一个函数,也可以是一个block。

2017-01-15 14:43:44 258

原创 UITableViewCell重用

重用机制可以节省很多内存,- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {          static NSString *CMainCell = @"CMainCell";     //  0    

2017-01-15 14:40:32 307

原创 指针数组与数组指针

数组指针(指向数组的指针)是存放着地址的变量,属于二级指针,寻址方式是寄存器间接寻址,操作数(变量)存储在内存中,该内存地址(一级指针)存储在寄存器中,寄存器地址(二级指针)存储在地址码字段中,这种存储方式指令长度短,范围大,可是每次要访问两个设备,所以速度慢。形式:数据类型 (*指针变量)[指向数组的长度];用数组指针遍历二维数组非常方便。arr[3][4]={{1,2,3,4},{

2015-05-31 15:21:05 427

原创 oc函数

函数是一种非常好用的结构,它可以重复使用,简化代码,提高代码的效率,1、函数调用在函数定义之后,可以直接定义函数;如果函数调用在函数定义之前,或调用的函数在另一个源文件中,就需要声明函数;2、主函数调用函数是传递的是实参的副本,函数用形参接收实际上是对新生成的变量(形参)进行了初始化赋值,所以,形参的改变不影响实参;3、递归函数:即调用该函数本身的函数;递归函数就像一个循环一样,在

2015-05-30 12:07:36 1216

原创 oc变量类型

oc包含了一系列的变量类型,整形,字符型,浮点型,枚举型。变量在使用时必须先声明后使用,并且指定类型的变量只能接收类型与他匹配的值。需要注意的是,在声明时,标示符不能与oc中的关键字相同,不然会傻傻分不清楚。 标示符:标示符由字母,数字,下划线和美元符号($)组成;标示符不能是关键字,但可以包含关键字;标示符不能包含除美元符($)以外的任何符号;(only   dollar……

2015-05-30 11:55:53 1149

原创 oc学习心得

最近浅浅的学习了一下IOS,颇有感慨。使用手机这么多年有没有想过自己写一个APP?而且还是iPhoneAPP,听起来好高大上啊,不过这并不是天方夜谭,前提是好好敲代码!从一个programmingzero变成一个Appstore hero.      作为一个21世纪的优秀青年,看到apple满天飞怎能无动于衷呢?虽然Objective—C是苹果的专属编程语言,但近年阳光雨露过盛,apple泛

2015-05-28 22:54:07 666

空空如也

空空如也

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

TA关注的人

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