iOS-Objective C
gorpelnChen
这个作者很懒,什么都没留下…
展开
-
viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
viewWillAppear:视图即将可见时调用。默认情况下不执行任何操作viewDidAppear:视图已完全过渡到屏幕上时调用viewWillDisappear:Calledafter the view was dismissed, covered or otherwise hidden. Defaultdoesnothing视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何原创 2017-02-17 12:13:18 · 2373 阅读 · 0 评论 -
iOS开发知识与能力体系 思维导图
越写越多,整理不完,也许思维导图都不是最好的承载工具了,以后再继续补充。分辨率为2042*3917,点击查看大图:转载 2017-02-23 15:21:20 · 2827 阅读 · 0 评论 -
iOS字符串转数组,数组转字符串
NSString *testString = @"1,2,3,4,5"; NSArray *testArray = [testString componentsSeparatedByString:@","]; NSLog(@"testArray=========%@",testArray); NSString *tempStr = [testArray component原创 2017-02-22 18:26:54 · 6023 阅读 · 0 评论 -
iOS生成二维码
// 生成二维码-(void)createQRCode{ CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; [filter setDefaults]; NSData *data = [@"http://blog.csdn.net/chen_gp_x" dataUsingEncoding:原创 2017-02-23 16:28:54 · 2172 阅读 · 0 评论 -
iOS统计数组相同元素的个数
- (void)viewDidLoad { [super viewDidLoad]; //统计数组相同元素的个数 NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; //需要统计的数组 NSMutableArray *array = [[NSMutableArray原创 2017-02-23 18:23:52 · 4969 阅读 · 1 评论 -
iOS中KVC与KVO的区别
一、KVC与KVO*“KVC”:key value Coding(键值编码)*目的:间接的修改或获取对象的属性,降低程序(类与类)之间的耦合度.*“KVO”:key value Observer(键值观察),观察者模式.(检测模型变化用的多)*目的:通常用于观察某个对象的某个属性发生变化时,及时做出相应.二、KVC的使用方式KVC被称为iOS开发平台的大招!转载 2017-02-15 18:00:44 · 2654 阅读 · 0 评论 -
iOS中nil/Nil/NULL/NSNull的区别
一、NULL1、声明位置stddef.h文件2、定义[objc] view plaincopy#undef NULL #ifdef __cplusplus # if !defined(__MINGW32__) && !defined(_MSC_VER) # define NULL __null转载 2017-02-15 18:12:37 · 2398 阅读 · 0 评论 -
imageNamed和imageWithContentsOfFile的区别
一、imageNamed方法:这种方法会首先在系统缓存中根据指定的名字寻找图片,如果找到了就返回。如果没有在缓存中找到图片,该方法会从指定的文件中加载图片数据,并将其缓存起来,然后再把结果返回,下次再使用该名称图片的时候就省去了从硬盘中加载图片的过程。对于相同名称的图片,系统只会把它Cache到内存一次。另外,在iOS4及以上系统中,如果是PNG格式的图片,使用该方法加载时不用再指定文原创 2017-02-16 10:27:26 · 2391 阅读 · 0 评论 -
loadView、viewDidLoad及viewDidUnload的关系
loadView1.什么时候被调用?每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方法就会被调用。2.有什么作用?loadView方法是用来负责创建UIViewController的view3.默认实现是怎样的?默认实现即[super loadView原创 2015-10-05 22:28:34 · 4044 阅读 · 3 评论 -
iOS数据持久化存储
总述:所谓数据持久化是指,将数据存储下来,使得应用程序下次打开或者机器重启后可以继续访问之前保存的数据。iOS开发中有多种持久化方案,如:plist文件(属性列表)NSKeyedArchiver(对象归档)preference(偏好设置)sqlite3coredata 沙盒机制:ios不同应用有独立的文件目录,不能互相访问。这个独立的文件目录就称为”沙盒”. 1、目录结构,原创 2016-03-08 18:27:29 · 16912 阅读 · 1 评论 -
向右滑动返回上一界面
- (void)viewDidLoad { [super viewDidLoad]; // 获取系统自带滑动手势的target对象 id target = self.navigationController.interactivePopGestureRecognizer.delegate; // 创建全屏滑动手势,调用系统自带滑动手势的target的原创 2017-03-14 20:02:53 · 2908 阅读 · 0 评论 -
present,dismiss到任意控制器(二)
iOS开发中,在没有用到navigationController情况下,页面跳转多用present,但它并没有一个类似popToRootViewControllerAnimated的方法可以直接回到根控制器,下面给出三个方法:方法一:循环获取到最底层控制器,然后dismiss掉,直接返回到跟控制器- (void)logoutBtnOnClick { UIViewContro原创 2017-03-16 16:13:27 · 2251 阅读 · 0 评论 -
正则校验之身份证
一、理论部分:15位身份证号码=6位地区代码+6位生日+3位编号18位身份证号码=6位地区代码+8位生日+3位编号+1位检验码 各省市地区国家代码前两位代码是: 北京 11 吉林 22 福建 35 广东 44 云南 53 天津 12 黑龙江 23 江西 36 广西 45 西藏原创 2017-09-01 18:16:37 · 2830 阅读 · 0 评论 -
iOS声明变量在@interface括号中与使用@property的区别
刚开始接触OC再看别人写的代码的时候,常常困惑于人家在声明属性时的写法,总结出来有三中方式,不知道哪一种比较规范化,现在我把三种方式贴出来,然后再一一探讨每个方式声明属性的区别。方式一:直接在@interface中的大括号中声明。@interface MyTest : NSObject{ NSString *mystr;}方式二:在转载 2017-02-22 13:47:48 · 2200 阅读 · 0 评论 -
NSDictionary,JSON和XML互相转换
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ [self test]; // Override point for customization after application launch. re转载 2017-02-13 17:02:26 · 3097 阅读 · 0 评论 -
iOS进程与线程的区别
A.进程什么是进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内比如同时打开QQ、Xcode,系统就会分别启动2个进程通过“活动监视器”可以查看Mac系统中所开启的进程 B.线程主线程、子线程占用内存分别是1M和512K1.什么是线程1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)转载 2017-02-17 17:46:23 · 3061 阅读 · 0 评论 -
const,static,extern 的理解
static修饰局部变量让局部变量只初始化一次局部变量在程序中只有一份内存并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁)修饰全局变量全局变量的作用域仅限于当前文件const没有const修饰的指针指针p和*p都能被修改// 定义一个指针变量int *p = NULL;//原创 2016-11-13 16:27:36 · 24250 阅读 · 4 评论 -
iOS 排序算法总结—冒泡排序
一、算法描述冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。以下面5个无序的数据为例:40 8 15 18 12 (文中仅细化了第一趟的比原创 2016-07-27 22:06:04 · 5108 阅读 · 0 评论 -
数组倒序输出
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",nil];NSArray* reversedArray = [[array reverseObjectEnumerator] allObjects];输出:3.2.1原创 2017-02-28 17:59:26 · 2791 阅读 · 0 评论 -
汉字转成拼音
NSString *stringText = @"iOS开发交流群:119783156"; if ([stringText length]) { NSMutableString *mutableStringText = [[NSMutableString alloc] initWithString:stringText]; if (CFStringT原创 2017-02-20 14:47:15 · 2284 阅读 · 0 评论 -
NSNotification(通知)
//创建一个消息对象NSNotification * notice = [NSNotification notificationWithName:@"notification" object:nil userInfo:@{@"key":@"value"}];//发送消息[[NSNotificationCenter defaultCenter]postNotification:notic原创 2016-04-13 10:16:38 · 3787 阅读 · 0 评论 -
iOS多线程开发
概览大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行。改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI操作后其他后续任务在其他线程中,当CPU空闲时会继续执行,而此时对于转载 2016-03-16 19:53:15 · 17122 阅读 · 0 评论 -
iOS库.a与.framework
一、什么是库?库是共享程序代码的方式,一般分为静态库和动态库。二、静态库与动态库的区别?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。三、iOS里静态库形式?.a和.framework四、iOS里动态库形式?.dylib原创 2017-02-21 17:50:53 · 2268 阅读 · 0 评论 -
正则表达式
判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPre原创 2016-03-09 20:30:43 · 4146 阅读 · 1 评论 -
MRC到ARC的自动转换
回 到正题,我们讨论的是ARC,关于REST API和XML解析的技术细节就暂时先忽略吧..整个程序都是用MRC来进行内存管理的,首先来让我们把这个demo转成ARC吧。基本上转换为ARC意 味着把所有的retain,release和autorelease关键字去掉,在之前我们明确几件事情:* Xcode提供了一个ARC自动转换工具,可以帮助你将源码转为ARC* 当然你也可以自己动手完成A转载 2016-03-09 19:57:34 · 16596 阅读 · 0 评论 -
iOS 如何选择delegate、notification、KVO
前面分别讲了delegate、notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信: 1.委托deleg转载 2016-03-09 19:32:57 · 16321 阅读 · 1 评论 -
iOS去掉html 的转义符号
NSString *htmlString = @"[{\"age\":18,\"book\":{\"price\":23.2,\"title\":\"booooooook1\"},\"name\":\"samyou\"},{\"age\":22,\"book\":{\"price\":21,\"title\":\"booooooook2\"},\"name\":\"samsam\"}]";原创 2017-02-13 16:50:14 · 4724 阅读 · 2 评论 -
push,pop到任意控制器
主题思想:如A、B、C、D 四个视图控制器想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,再从 C pop 的A解决方法如下:1.假如此时在 A 控制器下,想要到 push 到 B, 可以这样写[self.navigationController pushViewController: B :YES];这时 self.navigationController...原创 2016-10-28 14:36:56 · 20889 阅读 · 5 评论