- 博客(118)
- 资源 (14)
- 收藏
- 关注
原创 重新绘制、刷新tableView的cell
重新绘制某行cellCGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath]; CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]]; 一个section刷新NSIndexSet *indexSet=[[N
2017-09-08 14:12:36
1125
转载 请求主线程
在iOS中只有主线程才能立即刷新UI。如果是通过侦听异步消息,触发回调函数,或者调用异步方法,请求刷新UI,都会产生线程阻塞和延迟的问题。正确的做法是回到主线程,方法如下:if ([NSThread isMainThread]) { [self.downloadMapBtn setImage:[UIImage imageNamed:@"download_map.png"] forSt
2017-09-08 14:01:10
231
原创 git stash
git stash备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。git stash pop从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。git stash list显示Git栈内的所有备份,可以利用这个列表
2017-09-08 13:57:21
403
原创 Git submodule添加子项目/库
开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。git submodule命令就可以解决这个问题。Git归并策略Git归并有两种策略:递归,章鱼。1.递归策略:当分支数只有两个的时候。2.章鱼策略:当分支数大于两个的时候。Git会自动选择归并的方法。3.子树策略:是Git另一种归并方法。(submodule)它可以把另一个子项
2017-09-08 10:51:31
6226
原创 面试题系列(一)
1.进程和线程有什么区别,存在什么联系?进程:在系统中正在运行的一个应用程序,是系统资源分配的基本单位,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址,一个进程所拥有的数据和变量只属于他自己。线程:进程中相对独立的可执行单元,所以也成为轻量线程,是操作系统进行任务调度的基本单元,他与父进程的其他线程共享进程所拥有的全部代码空间和全局变量,但用于独立的堆栈(局部变量对于线程来说是私有的)
2017-09-05 22:23:52
242
转载 iOS中[super class]为何会输出子类类型?
iOS中[super class]为何会输出子类类型?比如有一个自定义类DetailViewController继承自类UIViewController。那么我们对这个自定义类分别使用[self class]和[super class]将会分别输出如下结果: [self class] DetailViewController [super class]
2017-09-05 14:48:50
220
原创 键盘监听
【监听】#pragma mark - 监听键盘-(void)monitorKeyboard{ //添加监听键盘弹出 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardWillShowNotification object:ni
2017-09-04 20:48:58
647
原创 Xib And Storyboard
【Xib】Interface Builder 是用来组织创建应用程序的可视部分(用户界面)。使用它您可以拖放一些定义好的组件(UILabel、UIButton等)到应用程序窗口中,然后设置它们的属性,和应用程序对象建立连接。当您完成了创建视图后将会以(Mac OS工程为.nib,iOS工程为.xib)文件的形式保存起来。 其实xib是从iOS SDK初次面世开始就是捆绑在开发者工具
2017-09-03 16:17:06
306
原创 UICollectionView
【集合视图】UICollectionView是集合视图,是UIScrollView的子类,也非常重要。 【说明】 1、UICollectionView上item的布局依赖一个布局对象 2、也就是说布局对象决定了UICollectionView的items如何显示在界面上, Apple提供了一个最简单的布局对象(UICollectionViewFlowLayout), UICollectio
2017-09-03 16:14:22
210
原创 UINavigationController
【导航控制器】UINavigationController是导航控制器,是一个容器视图控制器, 用于切换具有层次关系的视图,而非同一级视图间的切换。视图控制器之间的切换【说明】导航管理子视图控制器的切换,采用栈数据结构的原理 push—>压栈 把子视图控制器放入导航的子视图控制器数组中【push的时候,内部有对svc指向的对象计数器加1】 pop—>出栈 把子视图控制器从导航的子视
2017-09-03 16:11:37
274
原创 block
block:就是一堆代码块,没有名字的代码块,相当于匿名函数,block就是一种具有匿名功能的内嵌函数,具有参数和返回值 block:对局部变量是只读__ block block某种意义上替代了回调函数或者delegate。这样有利于代码的整合和阅读,不需要到处是实现委托方法了。 代理设计模式 使用block实现委托模式,其优点是会掉的block代码块定义在委托对象函数内部,使代码更为紧凑;
2017-09-03 16:09:12
1394
原创 UITextField收键盘
UITextField是文本输入框,专门用于获取用户输入的文本 1、基本属性方法 2、代理回调方法 3、键盘监听定制 UITextField默认不收键盘 ctrl+command+空格:弹出表情键盘 取消UITextField第一响应,实际上就是收键盘收键盘:1.借助于UIControl来收键盘【点击键盘外侧空白部分就可以收键盘】例子在下面 2.通过UITouc
2017-09-03 16:06:29
525
原创 iOS程序的启动流程
a、UIApplicationMain函数的参数:int main(int argc, char * argv[]) {@autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));}}UIKIT_EXTERN int UIApplication
2017-09-03 16:00:38
396
原创 Xcode快捷操作
a Xcode相关command + 0 【显示/隐藏文件导航栏】 command + alt + ◀️/▶️ 【折叠/展开单一函数】 command + alt + shift + ◀️/▶️ 【折叠/展开所有函数】 command + control + ◀️/▶️ 【向前向后跳转】 command + control + 上/下【切换一个类的声明和实现】
2017-09-03 15:52:25
284
原创 super init
【构造方法】1.通常面向对象的语言都有在创建对象的时候,使用构造方法 2.在OC当中,所有init开头的方法,都是要手动调用的,是对类的对象进行初始化,包含两种,有参和无参 self其实就是对象本身,谁调用这个方法,谁就是self super: 调用父类方法的关键字 id:等价于void*【某些情况下】【说明】 为什么用super init,通常情况下,我们一个类的对象都是有父类的属性,加
2017-09-03 15:43:41
1087
转载 strlen和sizeof有什么区别?
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以”\0”结尾的。 sizeof还可以用函数做参数,比如: short f();printf("%d\n", si
2017-08-28 17:32:47
401
转载 -ObjC 的故事
在开发 iOS 应用时,可能遇见这样的情况:你想实现的某种功能(比如崩溃收集),已经有成熟的产品提供,可行的方案就是集成这个使用了很久,且有专业人员维护,最重要的是“免费”的产品。一番折腾之后,运行时有可能出现”selector not recognized”错误,最后发现是少了如下的配置(Build Settings -> “-ObjC”): “-ObjC” 的使用场景据坊间说:如果你集成了有
2017-08-28 13:58:20
272
原创 KVC 与 KVO
KVC 与 KVO 是 Objective C 的关键概念Key-Value Coding (KVC)KVC,即是指 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。 kvc(key-value-coding,键值编码) 为属性赋值:value 为属
2017-08-25 12:04:29
270
原创 网络请求
一. 数据的网络请求大多数APP都是依托于服务器的,由服务器负责数据的管理交互,分发,筛选等等。APP做的事情就是发送请求,接收数据。当然有些请求也可以伴随数据的上传。请求(Request):APP客户端发送给服务器的数据,根据服务器协议,通知服务器,要求服务器做出数据的筛选,管理或分发。 响应(Respond):服务器接收到APP的请求,会回馈响应。响应包括TCP稳定链接的建立,以及数据的传输。
2017-08-25 11:53:30
501
原创 SDK及API介绍
SDK(Software Development Kit),意思是软件开发包。拥有SDK方便大家对语音卡的编程。这个开发包通常都会包含语音卡的API函数库、帮助文档、使用手册、辅助工具等资源。意思就是,SDK事实上是开发所需资源的一个集合。Windows 32位平台下的软件开发包,包括了API函数、帮助文档、微软提供的一些辅助开发工具。 大家要注意的是API和SDK是一种使用比较广泛的比
2017-08-25 11:12:36
1018
原创 NSUserDefaults
数据永久化存储方式1.归档 2.plist文件 3.NSUserDefaults 4.普通文件 5.数据库NSUserDefaults是一种数据的本地存储机制,数据会随应用程序不消失。当关闭应用程序,下次再开启应用程序时,数据仍然存在,存储方法类似于NSDictionary,能存储的数据类型【NSString、NSArray、NSDictionary、NSNumber、NSData、NSDa
2017-08-25 10:58:48
240
原创 #import时<>括号和双引号的区别
“”表示从当前项目路径开始寻找文件,如果找不到,则到系统(项目)中配置的头文件路径去找; <>表示直接到系统(项目)中配置的头文件路径去找。
2017-08-23 11:01:58
1175
原创 内存管理
【内存管理是做什么事情的】1.就是把代码中程序员自己开辟的空间释放掉 内存4个区域【栈区、堆区(程序员自己操控)、数据区、代码区】【问题】 【这里的空间都是堆空间】 1.多次释放一个空间【重复释放】 2.过早释放空间【提前释放】 3.空间开辟没有释放【内存泄露】【困难】 1.一个堆空间必须等所以使用这个空间的指针使用完毕之后才可以释放 2.一个对空间的释放必须确定哪些指针指向这个空间,
2017-08-21 11:02:14
310
原创 XML解析
一、XML扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。1、XML语法标签/节点:格式:<节点名> 节点值 < /节点名>(关闭标签)如: <root>books</root> 其中root为节点名,books为节点值标签对大小
2017-08-21 10:45:49
207
原创 快速枚举
第一次for循环的时候,指向的是数组当中的第一个对象,第二次指向第二个,依次类推 会自动跳出 如果在快速枚举法期间,修改数组的元素(对象),程序会boom崩溃NSArray * array = @[@"one",@"Two",@"Three",@"Four"]; //快速枚举法for (NSString * str in array) { NSLog(@"%@",str);}
2017-08-20 18:52:18
439
原创 【description】方法
%@是可以打印所有的信息的,前提是实现description方法 否则就是打印该对象在堆区的地址 description方法,其实在父类中已经写好了,我们可以覆盖父类的description方法,直接使用我们自己定义的description方法 通常description方法的返回值是NSString,也就是该对象在使用NSLog时打印的信息; 只要这个对象在代码中使用到了NSLog就会自动
2017-08-20 18:46:08
1006
原创 类别
【category】【问】在使用一个类(官方还是第三方库),如果有一个XXX方法实在是太好了, 【答】OC中有一种形式叫做类别Category 【本质】就是给原来的类提供新的方法,可以认为是打补丁,也可以作为分类管理的方法【说明】1.类别是给原类添加方法,但是不能修改原类的方法,就相当于添加到原类当中去 2.类别中不能添加成员变量 3.但是类别中的方法是可以使用成员变量的 4.如果要使用该
2017-08-20 18:41:42
234
原创 isKindOfClass:[类名 class]
【类 class】Class就是一个变量的类型//cls就是一个变量,里面存放的是类的名字//静态的方法来获取一个类的名字Class cls =[NSString class];//【有用】NSLog(@"%@",cls);//动态的方法来获取一个类的名字Class cls2 = NSClassFromString(@"NSArray");NSLog(@"%@",cls2);//使用特
2017-08-20 18:39:47
702
原创 字典和选择器
【说明】1.OC中的字典是一个特殊的类,用来快速查找OC对象【只有OC有】 【C++内叫做map】 2.字典里面的对象是以【键值对】的形式出现的(一个key对应一个值) key是【键】 【值】是value 3.字典里面的对象不能是奇数 4.字典里面的键可以是任何的一个对象,值也一样 5.字典里面的键值对是没有一个顺序的【不可变字典】【NSDictionary】//利用键值对创建字典
2017-08-20 18:34:53
312
转载 iPhone 开发经典语录集锦
1:如果无法保证子类行为的一致性,那么就用委托 If the subClass cann’t keep with superClass,use delegate rather than inheritance2:屏幕上看到的,都是UIVew Everything you see on Screen is UIView3:如果对性能要求高,慎用Interface Build if applica
2017-08-20 18:24:20
432
原创 plist文件
简介在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。【用途】通常一些文本量不是很大的文本,通常用于储存用户设置,也可以用于存储捆绑的信息,例如登录信息,一些验证信息 可视化的存储文本【说明】p
2017-08-20 18:19:46
13476
原创 文件操作
【说明】nslog:写 stdout [屏幕也是文件] 按键盘:写 文件操作我们分为两类 对于文件夹:创建、删除、拷贝、移动、查看 对于普通文件来说:读取信息和写入信息 1.读 从存储设备到内存是读文件 2.写 从内存到存储设备是写文件 framebuffer【文件管理类】【NSFileManager】NSUTF8StringEncoding:可打印汉字#define SHO
2017-08-20 18:01:17
275
iOS技术概览
2017-09-08
IOS触摸事件
2017-09-08
iOS并发编程指南
2017-09-08
iOS 5 ARC完全指南
2017-09-08
coredata知多少
2017-09-08
Cocoa基本原理指南
2017-09-08
Blocks 编程要点
2017-09-08
iOS人机界面指导手册
2017-09-08
多线程编程指南
2017-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅