- 博客(54)
- 收藏
- 关注
原创 数据选择控件-UIPickerView的总结
数据选择控件就是帮助用户快速选择数据的控件。UIPickerView——显示一组或多组数据方便用户选择。作用(1)从指定的数据源中选择数据;(2)通常以UITextField的inputView的形式出现(当选中某个文本框后, 弹出键盘中显示该控件)。注意使用PickerView之前需要指定数据源对象和代理对象。需要使用到的两个协
2016-05-02 22:30:24
7400
原创 CALayer 的基本概念和基本使用
一、基本介绍1.概念CALayer 的 CA 是 Core Animation (核心动画)。在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层。在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过
2016-04-04 17:45:59
654
原创 UITableView 介绍
一、UITableView 理解在移动应用中,能看到各式各样的表格数据。在iOS中,要实现表格数据的展示,最常用的做法就是使用UITableView。UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳。UITableview有分组和不分组两种样式,可以在storyboard或者是用代码设置。A、UITableViewStyleGrouped
2016-01-24 23:10:31
718
原创 CATransition-转场动画
CATransition-转场动画概念它是 CAAnimation 的子类,用于做转场动画,能够为层 (CALayer) 提供移出屏幕和移入屏幕的动画效果。实际上 UINavigationController 就是通过 CATransition 实现了将控制器的视图推入屏幕的动画效果。属性解析: type:动画过渡类型 subtype:动画过渡方向
2016-01-17 20:48:55
390
原创 UIScrollView 介绍
一、UIScrollView 的基本概念UIScrollView是iOS中的滑动控件,可以实现”滚动”和”缩放”,用来解决当前要显示的内容超出视图的范围时,可以通过滑动方式查看视图的所有内容的问题。二、UIScrollView 的常见属性1、、contentSize// default CGSizeZero@property(nonatomic) CGSi
2016-01-10 22:00:24
433
原创 浅析 UIImage 的2种加载方式对内存的影响
A、UIImage的2种加载方式:方式一:有缓存(图片所占用的内存会一直停留在程序中)+ (nullable UIImage *)imageNamed:(NSString *)name; // name是图片的文件名解析:1. 该方法会自动地做缓存,一般用于给控件添加素材图片,比如背景图片、placeHolder等。 2. 使用(
2015-12-29 12:18:01
3486
原创 Objective-C 之 KVO 详解
A、概要iOS 开发有多种设计模式,其中就有一种叫做观察者模式,它是通过 KVO 实现的。B、KVO 简介KVO 的全称是 Key-Value Observing,是ObjC中原生支持的一种机制。C、KVO 实现原理当对一个对象添加观察者,被观察对象的属性值发生变化时,观察者会得到通知,并对变化做出相应的处理。D、KVO 的特点1. 支持多个
2015-12-13 20:43:48
644
原创 Objective-C 之KVC详解
一、KVC深入理解a. 概念:KVC:指的是 key valued coding 键值编码。b. 赋值:使用KVC间接修改对象属性时,系统会自动判断对象属性的类型,并完成转换。c. 取值:KVC按照键值路径取值时,如果对象不包含指定的键值,会自动进入对象内部层层深入,获取对应的键值。d. 注意:KVC是一种间接修改/读取对象属性的一种方式,在使用时需要注意,
2015-12-10 16:10:46
597
原创 ARC环境下两种单例设计模式的比较:GCD和同步锁
A. 单例模式的设计思路:(1)永远只分配一块内存来创建对象;(2)提供一个类方法,返回内部唯一的实例;(3)确保 init 方法只初始化一次;(通常采用懒加载的方式在第一次用到实例的时候再去创建它。)B. 单例模式的作用 :可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源。
2015-12-08 23:27:19
670
原创 XML数据解析的两种方法:SAX和DOM
一、XML的简单介绍 1.XML(eXtensible Markup Language)'可扩展标记语言',跟JSON一样,也是用来数据交互。而HTML是超文本标记语言,用来表示网页页面。 2.XML语法简介: 一个完整的XML文件叫XML文档(XML Document),一般由以下几部分组成: a. 文档
2015-12-01 19:19:22
537
原创 使用苹果原生的JSON数据解析浅析
一、什么是JSON数据? 1. JSON:是一种轻量级的传输数据格式,用于数据交互。 JSON 是 javascript 语言的一个子集。 javascript 是个脚本语言(不需要编译),用来给HTML增加动态功能,javascript和java没有半毛钱的关系! 服务器返回给客户端的数据,一般都是 JSON 格式或者 X
2015-12-01 17:27:58
1289
原创 NSUrlSession 网络会话介绍
NSUrlSession 网络会话的使用分三步:1> 创建网络会话 【单例】2> 实例化网络任务【默认挂起状态,并且在在子线程回调】3> 开启网络任务【手动】- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSString *urlString = @"http://local
2015-12-01 16:46:43
395
原创 介绍5个简单的网络请求Demo
介绍5个简单的网络请求Demo。1.- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1. 创建一个网络请求 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; NSURLRequest *request =
2015-12-01 15:25:25
728
转载 iOS开发的22个诡异技巧,你知道多少?
1. TableView不显示没内容的Cell怎么办?类似于图1,我不想让下面的那些空显示。很简单,添加“self.tableView.tableFooterView = [[UIView alloc] init];”试过都说好,加完这句之后就变成了图2的样子。2. 自定义了leftBarbuttonItem左滑返回手势失效了怎么办?self.navigationItem.
2015-11-15 18:06:33
638
原创 swift语言入门介绍
1.OC 的gcd、runtime是开源的,UIKIT是闭源的;WWDC会议有对语言的新特性的讲解,维持一周,现在主推Swift语言。2.所有的声明和实现都在同一个文件中;没有.h和.m文件。3.整数默认类型是int long小数默认类型是double(oc中的CGFloat 是单精度的)数据的类型是自动推导的,能根据 ’=’ 右边的数据
2015-11-05 20:21:56
508
原创 Git/Framework静态库介绍:创建和使用
一、创建Framework静态库1. 选择Cocoa Touch Framework 一栏:2.在导入已经创建好的Framework静态库时要用Framework静态库时导入头文件要使用””。3.头文件跟.a一样,默认只输出创建项目时自带的.h,如果要导出头文件,找项目--> Build Phases --> Headers -->将Project的头文
2015-11-01 20:57:28
1176
原创 Git/.a静态库的介绍:创建和使用
一、 创建.a静态库1. 选择Cocoa Touch Static Library 一栏:2. 编译编译时时先用真机编译一次,.a文件的颜色就会从红色变为黑色;默认编译后(真机/模拟器分别运行)只会输出自带的.h, 不会输出新建类的.h;需要手动做修改“选择项目--> Build Phases --> Copy file --> 添加.h”。
2015-11-01 20:56:11
975
原创 网络编程基础
一、网络编程网络编程是一种实时更新应用数据的常用手段,是开发优秀网络应用的前提和基础。二、基本概念客户端(Client):一般就是前端/前台,移动应用(iOS、android等应用)开发都是前端开发。服务器(Server):为客户端提供服务、提供数据、提供资源的机器,负责处理网络请求,本质也是一台计算机(+服务器软件),服务器开发就是后端/后台开发(java/p
2015-10-29 23:55:05
584
原创 NSOperation的介绍
iOS开发多线程篇—NSOperation简单介绍一、NSOperation简介1. 简单说明a. NSOperation的作用:是OC语言中基于GCD的面向对象的封装,使用起来比GCD更加简单(面向对象);提供了一些用GCD不好实现的功能,使用NSOperation不用关心线程以及线程的生命周期(苹果推荐使用)。b. 配
2015-10-27 23:51:36
352
原创 Foundation框架之NSString的小众笔记
部分Foundation框架的总结:1.范围 _NSRange 的结构体: typedef struct _NSRange { unsigned int location; unsigned int length; }NSRange; //其中location表示字段存放该范围的起始位置,length
2015-10-27 18:10:06
310
原创 iOS开发之多线程编程:GCD
1. 什么是GCD?全称是Grand Central Dispatch,是纯C语言,提供了非常多强大的函数。2. GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案;GCD会自动利用更多的CPU内核(比如双核、四核);GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程);程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理
2015-10-16 23:04:10
455
原创 iOS中的消息循环
1. 消息循环概念RunLoop就是消息循环,每一个线程内部都有一个消息循环。只有主线程的消息循环默认开启,子线程的消息循环默认不开启。 2. 子线程开启消息循环的3种方式:(1)开启消息循环 使用run方法后无法停止消息循环。[[NSRunLoopcurrentRunLoop]run];(2)指定循环运行时间[[NSRunLoo
2015-10-16 20:34:36
1893
原创 Weak、Strong、assign 和 autorelease + 1道面试题
一、weak、strong、assign的理解1. OC 对象用 strong,为什么连线的ui控件却用weak?controller → view → view.subViews → imageView → 强引用controller → imageView → 弱引用controller → imageView 这个位置换成 strong 也可以,但是不建议,如
2015-10-11 01:18:37
531
原创 线程间通信
1. 什么叫做线程间通信在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信。2. 线程间通信的体现1个线程传递数据给另1个线程;在1个线程中执行完特定任务后,转到另1个线程继续执行任务。线程间通信常用方法- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(n
2015-10-11 00:50:15
433
原创 原子和非原子属性
一、原子和非原子属性1. OC在定义属性时有nonatomic和atomic两种选择:atomic:原子属性,为setter方法加锁(默认就是atomic);nonatomic:非原子属性,不会为setter方法加锁。2. nonatomic和atomic的对比atomic:线程安全,需要消耗大量的资源;nonatomic:非线程安全,适合内
2015-10-11 00:28:53
2281
原创 多线程的安全隐患
1. 资源共享1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源;比如多个线程访问同一个对象、同一个变量、同一个文件;当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题。2. 安全隐患示例–存钱取钱3. 安全隐患分析4. 安全隐患解决–互斥锁5. 互斥锁使用格式@synchron
2015-10-11 00:26:09
622
原创 iOS中多线程的实现方案之pthread和NSThread
【文章结尾附上iOS中多线程的实现方案总结】一、pthreada. demo1b. demo2c. 对demo2中提到的 __bridge 的理解ARC只负责OC的代码,不负责 c 的代码;在ARC中,使用到和 c 语言对应的数据类型,应该使用__bridge桥接,在MRC中,不需要桥接;在OC中,如果是ARC的话,编译的时候会自动添加ret
2015-10-10 22:56:40
504
原创 多线程基础知识介绍
1.基本概念a. 同步执行:1个线程中任务的执行是串行的;如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务;也就是说,在同一时间内,1个线程只能执行1个任务。b. 异步执行:多个人可以同时执行多个任务。c. 进程:进程是指在系统中正在运行的一个应用程序;每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内(比如同时打
2015-10-10 22:45:31
859
1
原创 归档解档(编码解码)
1.理解a. 如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver进行归档和恢复;b. 不是所有的对象都可以直接用这种方法进行归档,只有遵守了NSCoding协议的对象才可以;2. NSCoding协议的2个方法:uencodeWit
2015-10-08 01:01:44
1101
原创 偏好设置的存储
1. 理解:a. 很多iOS应用都支持偏好设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能。b. 每个应用都有个NSUserDefaults实例,通过它来存取偏好设置,比如:保存用户名、字体大小、是否自动登录等。c. 注意:UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程
2015-10-08 00:48:55
1359
原创 XML属性列表(plist)归档
XML属性列表(plist)归档1> 理解:a. 属性列表是一种XML格式的文件,拓展名为plist;b.如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中;c. 自定义对象不能做 plist 存储,因为它没有
2015-10-08 00:24:55
590
原创 数据存取的方式和应用沙盒目录的常见获取方式
iOS应用数据存储的常用方式1. XML属性列表(plist)归档2. Preference(偏好设置)3. NSKeyedArchiver归档4. SQLite3(本文不涉及)5. Core Data(本文不涉及)应用沙盒:每个iOS应用都有自己的应用沙盒(应用沙盒就是应用的文件夹),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒.但是,在iOS
2015-10-08 00:08:49
1089
原创 实现从一个应用程序内部跳转到另一个应用程序的Demo
2个APP素材:《网易彩票》《幸运大转盘》原理理解1:苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互之间是不可以进行通信的。但是iOS的APP可以注册自己的URLScheme,来实现app之间的互相调用。我们可以通过系统的OpenURL来打开注册了URLScheme的app,并可以传递一些参数。原理理解2:一个APP的URLSche
2015-09-30 16:10:01
1655
原创 《幸运大转盘》代码分享
《幸运大转盘》有一句代码是这样的:self.rotateView.transform = CGAffineTransformMakeRotation(-angle);它出现在延迟派遣消息 dispatch_after 里面,然而你真的看懂它了吗?本文将揭秘这句代码的真相!红字黄底标出!#import "ViewController.h"#import "ZHYView.
2015-09-26 01:26:09
5022
原创 awakeFromNib与viewDidLoad的区别
当一个nib文件对应两个类,File's Owner的class为CZViewController,Objects下的View对应的为CZView时:【如果不好理解的话,你可以这么理解: Main.storyboard关联了ViewController类,而ViewController中有一个UIView,这个UIView对应的是类CZView。】 1. 用在何
2015-09-26 01:25:01
1025
原创 手势识别功能(Gesture Recognizer)
1.手势识别概念a. iOS 3.2之后,苹果推出了手势识别功能(GestureRecognizer),在触摸事件处理方面,大大简化了开发者的开发难度。b.为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer,利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势。2.
2015-09-23 18:20:12
2164
原创 多点触控及一个华丽的Demo
1.触摸过程一次完整的触摸过程,会经历3个状态:触摸开始:-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event触摸移动:-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event触摸结束:-(void)touchesEnded:(
2015-09-22 01:36:33
1267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人