- 博客(51)
- 收藏
- 关注
转载 PCH文件的添加过程
在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编译器就会自动的将pch文件中的头文件添加到所有的源文件中去,这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性,但潜在的也带来了一些问题,这也是
2017-09-05 13:36:45
380
转载 Xcode 快速开发 代码块
Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带来很大的方便。常用的:1.strong:@property (nonatomic,strong) *;2.weak:@property (nonatomic,weak) *;3.copy:@property (nonatomic,copy) NSStrin
2017-09-04 21:47:25
331
转载 iOS多线程中的锁
锁的类别:互斥锁,递归锁,条件锁,自旋锁等锁的实现方式:NSLock,NSRecursiveLock, NSConditionLock,@synchronized,GCD的信号量等下面说一下常用的几种锁:1.@synchronized:对象级别所,互斥锁,性能较差不推荐使用@synchronized(这里添加一个OC对象,一般使用self) {
2017-07-31 11:20:58
338
转载 iOS程序中的内存分配 栈区 堆区 全局区(静态区) 常量区 方法区
iOS程序中的内存分配 栈区堆区全局区(转)在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。一、内存分区栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点时有限制,数据不灵活。[先进后出]栈空间分静态分配 和动态分配两种。
2017-04-19 10:20:18
2668
原创 iOS关键字
一、const与宏的区别(面试题):const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。宏的好处:宏能定义一些函数,方法。 const不能。宏的坏处:使用大量宏,容易造成编译时间久,每次
2017-04-19 09:00:15
472
原创 Runtime简介
一、runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过
2017-04-18 21:03:27
312
转载 ipa打包的四种方法
总结一下,目前.app包转为.ipa包的方法有以下几种:1、Apple推荐的方式,即实用xcode的archive功能Xcode菜单栏->Product->Archive->三选一,一般选后两个。局限性:个人开发一般采用这种方法,但是当一个证书多人使用时就稍显麻烦。一般多人开发时都是采用provisioning profile+P12文件来进行真机调试。上述方法在最后导出i
2017-04-12 22:40:53
1901
原创 XMPP
一,Socket网络模型OSI(Open System Interconnection开放系统互联模型)为了全家计算机之间可以通讯才发明的这个模型模型如下(其中每一层都有每一层协议)1.应用层:解析的东西显示到这上面2.表示层:对数据的解析3.会话层:建立连接其中Socket是来到会话层的4.传输层:定义传输层协议TCP UDP5
2017-03-29 21:55:13
300
原创 description方法
description基本概念1.NSLog(@"%@", objectA);这会自动调用objectA的description方法来输出ObjectA的描述信息.2.description方法默认返回对象的描述信息(默认实现是返回类名和对象的内存地址)3.description方法是基类NSObject 所带的方法,因为其默认实现是返回类名和对象的内存地址, 这样
2017-03-26 17:49:32
292
转载 MJExtension的使用方法
1.简单的字典 --> 模型核心代码 mj_objectWithKeyValues:typedef enum { SexMale, SexFemale} Sex;@interface User : NSObject@property (copy, nonatomic) NSString *name;/* 姓名 */@property (copy, nonatomic) NS
2017-03-14 10:50:19
4705
原创 Oauth和Oauth2.0的区别
一、 Oauth的概念Oauth的官方简介是:An open protocol to allow secure API authorization in a simple andstandard method from web, mobile and desktop applications.随着大量开放平台的出现,建立在开放平台之上的各种第三方应用也在大量冒出,出对安全性
2017-03-13 18:23:02
2551
原创 KVC和KVO的使用
一,KVCKVC是Cocoa的一个大招,最主要的用处就是可以随意的修改一个对象的属性和成员变量,并且私有的也可以修改 forKeyPath包含了forKey的功能,以后使用forKeyPath就可以了 forKeyPath中可以利用.运算符, 就可以一层一层往下查找对象的属性#import #import "Person.h"#imp
2017-03-13 15:48:37
239
原创 cocoapods使用教程
:如何下载和安装CocoaPods?1.用淘宝的Ruby镜像来访问cocoapods。按照下面的顺序在终端中敲入依次敲入命令:$ gem sources --remove https://rubygems.org///等有反应之后再敲入以下命令$ gem sources -a https://ruby.taobao.org/ (注意是https)为了
2017-03-10 13:19:29
270
原创 tableview的优化问题
1.使⽤用不透明视图。不透明的视图可以极⼤大地提⾼高渲染的速度。因此如⾮非必要,可以将 table cell及其⼦子视图的opaque属性设为YES(默认值)。其中的特例包括背景⾊色,它的 alpha值应该为1(例如不要使⽤用 clearColor);图像的alpha值也应该为1,或者在画图时设为不透明。2. 不要重复创建不必要的table cell。
2017-03-10 13:17:23
245
原创 自定义控件的方式
#pragma mark 自定义控件的方法#pragma mark 纯代码自定义控件使用纯代码的方式一般来说我们的自定义类继承自UIView,首先在initWithFrame:方法中将需要的子控件加入view中。注意,这里只是加入到view中,并没有设置各个子控件的尺寸。为什么要在initWithFrame:方法而不是在init方法?
2017-03-10 12:54:17
347
原创 runloop和runtime的区别
一.RunLoop: Runloop是事件接收和分发机制的一个实现。 Runloop提供了一种异步执行代码的机制,不能并行执行任务。 在主队列中,Main RunLoop直接配合任务的执行,负责处理UI事件、定时器以及其他内核相关事件。(1).RunLoop的主要目的:
2017-03-10 12:52:59
2431
原创 UIView的动画
iOS开发-UIView之动画效果的实现方法(合集)前言:在开发APP中,我们会经常使用到动画效果。使用动画可以让我们的APP更酷更炫,最重要的是优化用户体验,但取决于动画的质量。像QQ、微信、新浪微博等APP,动画效果就很好了,至少我很喜欢它们的动画,让我使用起来感觉很顺畅,心情很开朗。本文会介绍UIView效果的实现方法,非核心动画。一、使用
2017-03-10 12:44:51
386
原创 setNeedsDisplay和setNeedsLayout
1,UIView的setNeedsDisplay和setNeedsLayout方法首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到 UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以 处理子视
2017-03-10 12:39:44
224
原创 NSLog自定义
#ifdef __OBJC__#import #import #import "UIView+Extension.h"#import "UIBarButtonItem+Extension.h"#import "UIWindow+Extension.h"#import "NSDate+Extension.h"#import "NSString+
2017-03-10 12:37:44
382
原创 layoutSubviews
ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————-- (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————–-
2017-03-10 12:34:38
182
原创 interactivePopGestureRecognizer
苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecognizer.enabled = YES;这个api功能就是在NavigationController堆栈内的UIViewController可以支持右滑手势,也就是不用点击右上角的返回按钮,轻
2017-03-10 12:05:42
882
原创 initialize方法和init区别详解
[置顶] initialize方法和init区别详解 分类: IOS开发2015-08-2211:31205人阅读评论(0)收藏举报 原创帖子,转载请注明出处:http://blog.youkuaiyun.com/sbvfhp/article/details/47857851 1、定义Father类 [objc] view
2017-03-10 12:04:47
4146
1
原创 CGAffineTransform的使用大概
iOS方法类:CGAffineTransform的使用大概CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放、旋转和平移操作:另称放射变换矩阵,可参照线性代数的矩阵实现方式0.0这里附上的CGAffineTransform官方文档:https://de
2017-03-10 12:00:12
239
原创 automaticallyAdjustsScrollViewInsets属性
automaticallyAdjustsScrollViewInsets属性最近遇到一个问题是这样的,App一般自己都会有一个UINavigationController,顶部TableView如果有tableHeaderView如果设置起始位置是(0,0)是在导航栏的下面的,为了更好地UI希望从屏幕的(0,0)开始,就遇到了上面的这个问题,简单的看一下效果:
2017-03-10 11:58:44
348
原创 坐标系的转换
转换坐标系就是本来中间那个家伙是以左边那个家伙为坐标系的,现在变为以右边那个家伙为坐标系,它的坐标变为多少,其实就是中间那个控件以右边那个控件为坐标的位置// 蓝色UIView *blue = [[UIView alloc] init];blue.backgroundColor = [UIColor blueColor];blue.frame = CGRectMak
2017-03-10 11:57:48
261
原创 图片压缩问题
最近做论坛功能,发帖的时候需要用到从相册中选取图片然后上传,由于每次上传图片的最大数量为9张,所以需要对图片进行压缩。开始时用了以前经常用的压缩的方法:[objc] view plain copy//压缩图片质量+(UIImage *)reduceImage:(UIImage *)image percent:(float)percent{ NSData
2017-03-10 11:55:59
221
原创 UIImageView的缓存问题
UIImageView *imageView = [[UIImageView alloc] init];imageView.image = [UIImage imageNamed:@"avatar_vip"];// NSString *file = [[NSBundle mainBundle] pathForResource:@"avatar_vip@2x" ofType:@
2017-03-10 11:54:47
775
原创 iOS中数据请求
#pragma mark - HTTP协议void HTTP (){#pragma mark ---------- GET,JSON,XML // 创建一个URL:请求路径 NSString *urlStr = [NSString stringWithFormat:@"http://localhost:8080/MJServer/logi
2017-03-10 11:52:41
386
转载 数据解析JSON/XML
原文链接:http://www.jianshu.com/p/a54d367adb2a除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明。先安利一波:JsonXML大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交
2017-03-10 11:49:19
765
原创 三种遍历方式的区别
for VS for(...in ...)for 的应用范围广基本可以NSArray、NSArray以及C语言的数组等,而for(...in ...)仅限于NSArray、NSArray等for(... in ...)更简洁、效率更高测试代码: 10^7的数组,时间单位秒,精确度毫秒复制代码
2017-03-10 11:37:14
824
原创 内存紧张以及程序进入后台
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application{ SDWebImageManager *mgr = [SDWebImageManager sharedManager]; //1.取消下载 [mgr cancelAll]; //2.清除缓存
2017-03-10 11:36:12
299
原创 关于storyboard
//constrain to margins如果你点了constrain to margins,左右会有8个点的空挡,而是从8个点后开始计算约束,而没有点时,已屏幕的0点开始计算。iOS8里加入了layoutMargins属性,如果选中Constrain to margins,则会依照layoutMargins的位置作为起点来进行约束。//update fram
2017-03-10 11:33:34
343
原创 常见的各种命令
如果你实在想尝试命令操作,可参考:显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles -booltrue隐藏隐藏文件:defaults write com.apple.finder AppleShowAllFiles -boolfalse1> 显示隐藏文件夹# 显示隐藏文件
2017-03-10 11:30:21
356
原创 ios中反向传值得几种方法
#pragma mark - 反向传值//1.代理//主动方(第二个界面):1.创建协议及协议方法 2.设置一个代理属性 3.判断代理是否存在以及协议方法时候存在,然后再传值//被动方:1.遵守协议 2.设置代理 3. 实现代理方法@protocol ShowTextDelegate @required-(void)showTex
2017-03-10 11:27:42
2331
原创 开发中遇到的错误
今天调试程序遇到这么一个警告!Local declaration of 'XXX' hides instance variable遇到这种原因,是因为本地变量跟函数参数变量同名。开来,还是要注意变量的命名啊!
2017-03-10 11:20:35
340
原创 OC三大特性(封装继承和多态)以及分类和扩展
一.封装二.继承:子类可以直接复用父类中的成员.子类继承父类所有方法非私有的成员变量以及协议继承时要在.h中声明一下继承具有单根性和传递性继承的根类:大多都继承自 NSObject类,所以在定义一个类时,要继承NSObject类。继承就是代码优化公共部分交给父类例如:(Person是
2017-03-10 11:10:44
376
原创 Block总结
#pragma mark - block的基本使用 只有调用block才会实现block中的代码传入方声明block调用block,接收方实现block对传过来的值进行使用#warining 1.声明block 2.调用block 3.实现block@implementation RootViewController-
2017-03-10 11:06:46
256
原创 ios开发中的几种设计模式
- 单例模式:通过static关键词,声明全局变量。在整个进程运行期间只会被赋值一次。/** static : 修饰变量 1> 修饰全局变量 * 全局变量的作用域仅限于当前文件内部(不加的话别人使用extern关键字就能从其他文件访问这个文件的全局变量了) 2> 修饰局部变量 : * 能保证局部变量永远只初始化1次,在程序运行过程中,永远只
2017-03-10 11:01:56
281
原创 NSThread GCD NSOperation 三者的用法区别
先看看三种线程的区别#pragma mark - NSThread 自己的笔记线程的基本使用[NSThread detachNewThreadSelector:@selector(threadMain1:) toTarget:self withObject:@(20)];//detach派遣 NSThread *thread2 = [[NSThread al
2017-03-10 10:40:37
1135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人