
iOS技术点
糖果屋的世界
这个作者很懒,什么都没留下…
展开
-
Xcode快捷操作
a Xcode相关command + 0 【显示/隐藏文件导航栏】 command + alt + ◀️/▶️ 【折叠/展开单一函数】 command + alt + shift + ◀️/▶️ 【折叠/展开所有函数】 command + control + ◀️/▶️ 【向前向后跳转】 command + control + 上/下【切换一个类的声明和实现】原创 2017-09-03 15:52:25 · 309 阅读 · 0 评论 -
设备和分辨率
常识原创 2017-09-03 15:48:45 · 407 阅读 · 0 评论 -
iOS常见加密算法
一 、MD5加密MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。 MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。 MD5算法还具有以下性质: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。转载 2017-09-11 11:59:00 · 558 阅读 · 0 评论 -
字典(NSDictionary)和JSON字符串(NSString)之间互转
字典转Json字符串-(NSString *)convertToJsonData:(NSDictionary *)dict{NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];NSString *j原创 2017-09-08 14:18:29 · 12483 阅读 · 0 评论 -
请求主线程
在iOS中只有主线程才能立即刷新UI。如果是通过侦听异步消息,触发回调函数,或者调用异步方法,请求刷新UI,都会产生线程阻塞和延迟的问题。正确的做法是回到主线程,方法如下:if ([NSThread isMainThread]) { [self.downloadMapBtn setImage:[UIImage imageNamed:@"download_map.png"] forSt转载 2017-09-08 14:01:10 · 251 阅读 · 0 评论 -
git stash
git stash备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。git stash pop从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。git stash list显示Git栈内的所有备份,可以利用这个列表原创 2017-09-08 13:57:21 · 422 阅读 · 0 评论 -
Git submodule添加子项目/库
开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。git submodule命令就可以解决这个问题。Git归并策略Git归并有两种策略:递归,章鱼。1.递归策略:当分支数只有两个的时候。2.章鱼策略:当分支数大于两个的时候。Git会自动选择归并的方法。3.子树策略:是Git另一种归并方法。(submodule)它可以把另一个子项原创 2017-09-08 10:51:31 · 6252 阅读 · 0 评论 -
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 · 416 阅读 · 0 评论 -
-ObjC 的故事
在开发 iOS 应用时,可能遇见这样的情况:你想实现的某种功能(比如崩溃收集),已经有成熟的产品提供,可行的方案就是集成这个使用了很久,且有专业人员维护,最重要的是“免费”的产品。一番折腾之后,运行时有可能出现”selector not recognized”错误,最后发现是少了如下的配置(Build Settings -> “-ObjC”): “-ObjC” 的使用场景据坊间说:如果你集成了有转载 2017-08-28 13:58:20 · 288 阅读 · 0 评论 -
super init
【构造方法】1.通常面向对象的语言都有在创建对象的时候,使用构造方法 2.在OC当中,所有init开头的方法,都是要手动调用的,是对类的对象进行初始化,包含两种,有参和无参 self其实就是对象本身,谁调用这个方法,谁就是self super: 调用父类方法的关键字 id:等价于void*【某些情况下】【说明】 为什么用super init,通常情况下,我们一个类的对象都是有父类的属性,加原创 2017-09-03 15:43:41 · 1107 阅读 · 0 评论 -
iOS中[super class]为何会输出子类类型?
iOS中[super class]为何会输出子类类型?比如有一个自定义类DetailViewController继承自类UIViewController。那么我们对这个自定义类分别使用[self class]和[super class]将会分别输出如下结果: [self class] DetailViewController [super class]转载 2017-09-05 14:48:50 · 231 阅读 · 0 评论 -
#import时<>括号和双引号的区别
“”表示从当前项目路径开始寻找文件,如果找不到,则到系统(项目)中配置的头文件路径去找; <>表示直接到系统(项目)中配置的头文件路径去找。原创 2017-08-23 11:01:58 · 1198 阅读 · 0 评论 -
键盘监听
【监听】#pragma mark - 监听键盘-(void)monitorKeyboard{ //添加监听键盘弹出 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardWillShowNotification object:ni原创 2017-09-04 20:48:58 · 673 阅读 · 0 评论 -
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 · 289 阅读 · 0 评论 -
cocoapods安装配置
配置步骤原创 2017-08-25 11:11:10 · 239 阅读 · 0 评论 -
网络请求
一. 数据的网络请求大多数APP都是依托于服务器的,由服务器负责数据的管理交互,分发,筛选等等。APP做的事情就是发送请求,接收数据。当然有些请求也可以伴随数据的上传。请求(Request):APP客户端发送给服务器的数据,根据服务器协议,通知服务器,要求服务器做出数据的筛选,管理或分发。 响应(Respond):服务器接收到APP的请求,会回馈响应。响应包括TCP稳定链接的建立,以及数据的传输。原创 2017-08-25 11:53:30 · 510 阅读 · 0 评论 -
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 · 422 阅读 · 0 评论 -
UITextField收键盘
UITextField是文本输入框,专门用于获取用户输入的文本 1、基本属性方法 2、代理回调方法 3、键盘监听定制 UITextField默认不收键盘 ctrl+command+空格:弹出表情键盘 取消UITextField第一响应,实际上就是收键盘收键盘:1.借助于UIControl来收键盘【点击键盘外侧空白部分就可以收键盘】例子在下面 2.通过UITouc原创 2017-09-03 16:06:29 · 564 阅读 · 0 评论 -
函数式编程
作为iOS开发者,常用Masnory/SnapKitMasonry是常用的自动布局的第三方框架 Snapkit是Masonry团队打造的swift版本的自动布局框架一个典型的Masonry的语句make.centerY.equalTo(self).offset(100);就是这个”.”让Masonry更加鲜活的展示给了开发者。这就是链式编程。链式编程概要如果想...转载 2018-05-29 09:37:09 · 304 阅读 · 0 评论 -
面向切面编程
切面可以简单地理解为嵌入不同函数中的功能相同的操作(打印调试信息等),每类功能相同的操作可以抽取出一个切面。 OOP:面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 AOP:面向切面编程,针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。 AOP是处理某个步骤和阶段的,从...原创 2018-05-28 17:43:19 · 479 阅读 · 0 评论 -
UIViewController生命周期
UIWindow如果相当于画框的话,UIViewController相当于是一个画布。1.创建一个类继承于UIViewController2.loadView方法当访问UIViewController的view属性时,view如果此时是nil,那么VC会自动调用loadView方法来初始化一个UIView并赋值给view属性。此方法用在初始化关键view,需要注意的是,在view初始化之前,不能先调原创 2018-02-06 17:17:36 · 2102 阅读 · 0 评论 -
iOS程序优化相关
1.tableview的优化优化:1.1 正确的复用cell。1.2 减少在返回每个cell里面的处理逻辑和处理时间。尽量将数据进行缓存和复用。1.3,尽量减少处理加载和计算的时间,不阻塞UI线程。1.4,尽量使用绘制每个cell。1.5,设置每个cell的opaque属性。1.6,尽量返回每行固定的height。1.7,在每个cell减少图形效果。1.8,分段加载数据。2.应用程序性能的调优1.用转载 2018-02-06 14:42:30 · 205 阅读 · 0 评论 -
UIColor,CGColor,CIColor三者的区别和联系
一、UIColor UIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。UIColor包含了一些类方法用于创建一些最常见的颜色,如白色,黑色,红色,透明色等,这些颜色的色彩空间也不尽相同(白色和黑色是kCGColorSpaceDeviceGray,红色的色彩空间是kCGColorSpaceDeviceRGB)转载 2018-01-19 15:41:38 · 1766 阅读 · 0 评论 -
webView设置请求头
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, Width, Height-64)];self.automaticallyAdjustsScrollViewInsets = NO;_webView.scrollView.showsVerticalScrollIndicator = NO;_webView.delega原创 2018-01-09 10:54:19 · 4726 阅读 · 0 评论 -
webView拦截H5按钮事件
需要遵守协议UIWebViewDelegate- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{NSString *requestString = [[[r原创 2018-01-08 17:42:44 · 2471 阅读 · 0 评论 -
单例
创建单例的两种方式只要使用其中一种 + (id)defaultManager { // 1. 第一种方式 //静态变量只会初始化一次 static Manager *sharedInstance = nil; //每次调用defaultManager的时候都返回同一个对象 if (sharedInstance == nil) {原创 2018-01-11 11:56:22 · 182 阅读 · 0 评论 -
@property参数详情
@property 格式:@property(参数1, 参数2)类型 名字;参数可有可无,比如: @property int age; @property (nonatomic,retain) UIButton *btn;参数主要分为3类 读写属性:readwrite/readonly setter处理:assign/retain/copy 原子性:atomic/nonatomic@p转载 2018-01-11 11:50:30 · 409 阅读 · 0 评论 -
AFNetWorking3.0用法
AFN3.0中没有FHTTPRequestOperationManager、NSURLConnection,AFHTTPRequestOperationManager是基于NSURLConnection封装的!!现在都用的是NSURLSession了,AFN中用的是AFHTTPSessionManager了~~GET请求AFHTTPSessionManager *manager = [AFHTTPS转载 2017-10-23 15:12:33 · 344 阅读 · 0 评论 -
循环复用原理图
如图所示原创 2017-09-03 16:20:08 · 692 阅读 · 0 评论 -
Xib And Storyboard
【Xib】Interface Builder 是用来组织创建应用程序的可视部分(用户界面)。使用它您可以拖放一些定义好的组件(UILabel、UIButton等)到应用程序窗口中,然后设置它们的属性,和应用程序对象建立连接。当您完成了创建视图后将会以(Mac OS工程为.nib,iOS工程为.xib)文件的形式保存起来。 其实xib是从iOS SDK初次面世开始就是捆绑在开发者工具原创 2017-09-03 16:17:06 · 320 阅读 · 0 评论 -
UICollectionView
【集合视图】UICollectionView是集合视图,是UIScrollView的子类,也非常重要。 【说明】 1、UICollectionView上item的布局依赖一个布局对象 2、也就是说布局对象决定了UICollectionView的items如何显示在界面上, Apple提供了一个最简单的布局对象(UICollectionViewFlowLayout), UICollectio原创 2017-09-03 16:14:22 · 221 阅读 · 0 评论 -
UINavigationController
【导航控制器】UINavigationController是导航控制器,是一个容器视图控制器, 用于切换具有层次关系的视图,而非同一级视图间的切换。视图控制器之间的切换【说明】导航管理子视图控制器的切换,采用栈数据结构的原理 push—>压栈 把子视图控制器放入导航的子视图控制器数组中【push的时候,内部有对svc指向的对象计数器加1】 pop—>出栈 把子视图控制器从导航的子视原创 2017-09-03 16:11:37 · 285 阅读 · 0 评论 -
block
block:就是一堆代码块,没有名字的代码块,相当于匿名函数,block就是一种具有匿名功能的内嵌函数,具有参数和返回值 block:对局部变量是只读__ block block某种意义上替代了回调函数或者delegate。这样有利于代码的整合和阅读,不需要到处是实现委托方法了。 代理设计模式 使用block实现委托模式,其优点是会掉的block代码块定义在委托对象函数内部,使代码更为紧凑;原创 2017-09-03 16:09:12 · 1497 阅读 · 0 评论 -
UIView生命周期
如图所示原创 2017-08-25 11:14:22 · 239 阅读 · 0 评论 -
SDK及API介绍
SDK(Software Development Kit),意思是软件开发包。拥有SDK方便大家对语音卡的编程。这个开发包通常都会包含语音卡的API函数库、帮助文档、使用手册、辅助工具等资源。意思就是,SDK事实上是开发所需资源的一个集合。Windows 32位平台下的软件开发包,包括了API函数、帮助文档、微软提供的一些辅助开发工具。 大家要注意的是API和SDK是一种使用比较广泛的比原创 2017-08-25 11:12:36 · 1073 阅读 · 0 评论 -
内存管理
计数器原理retain计数器在对象里面retainCount【保留计数】 get方法可以用点语法 retainCount保留计数或者引用计数 [xiaohong retain]; 1.首先,使指针指向的对象计数器➕1 2.然后返回当前xiaohong指向的对象的地址 计数器➕1之后,就会拥有对象空间绝对的使用权release只会使计数器➖1 只释放,不会改变指针的值 当计数器理论原创 2017-08-19 22:26:55 · 217 阅读 · 0 评论 -
继承和派生
继承:类和类之间的关系 派生:子类在父类基础上衍变出一些新的特性或者功能 子类比父类更加强大 父类 parentClass superClass 【基类】 子类 childClass subClass 【派生类】NSObject 还可以称为根类C++ 继承方式private 私有继承 protected 受保护继承 public 公有继承OC没有继原创 2017-08-19 22:17:35 · 204 阅读 · 0 评论 -
iOS armv7, armv7s, arm64区别与应用32位、64位配置
iOS armv7, armv7s, arm64区别与应用32位、64位配置历程1、2015年2月1日不允许不支持arm64的应用的提交; 2、iOS10发布后,如果你的应用中使用到了32位的类、库,没有相应支持64位机型的库,则首次启动后会弹窗式提示:“ xxx可能使iPhone变慢…”; 3、iOS10.3公测版发布:封杀32位应用; 4、苹果系统(iOS7/iOS8-iOS9),32位的转载 2017-08-10 17:48:29 · 5398 阅读 · 0 评论 -
点击手势
手势//图像添加点击事件(手势方法)self.headImageView.userInteractionEnabled = YES;UITapGestureRecognizer * PrivateLetterTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAvatarView:)];原创 2017-02-16 17:07:00 · 321 阅读 · 0 评论 -
日期和字符串互转
日期和字符串 //日期字符串转化为date NSDateFormatter*df = [[NSDateFormatter alloc]init];//格式化 [df setDateFormat:@"yyyy-MM-dd"]; self.date = [df dateFromString:self.dateStr];//da原创 2017-02-16 17:06:20 · 426 阅读 · 0 评论