![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 66
願不負歲月
开源共享
展开
-
iOS制作.a静态库
iOS 制作.a静态库 在实际的开发工作中, 很多时候我们希望别人在使用自己开发的功能时,看不到自己的核心代码。 这时候就要制作静态库了。1. 明确几个概念:库就是代码的集合。静态库在链接时会被拷贝到可执行文件中。 有多个程序使用了该静态库, 手机系统中就会有多份该静态库源码。iOS中静态库的存在形式: .a 和 framework。.a+.h+资源 = framwork2. 开始制原创 2018-04-02 19:34:55 · 630 阅读 · 0 评论 -
iOS检查继承关系
#import @interface JYPerson : NSObject@property(nonatomic,copy)NSString *name;@property(nonatomic,copy)NSString *age;@end#import "ViewController.h"#import "JYPerson.h"@interface ViewControl原创 2016-02-29 09:22:21 · 1023 阅读 · 0 评论 -
Block基础详解
#import //定义一个块变量类型typedef void (^FKProcessBlock)(int);//使用FKProcessBlock定义最后一个参数类型为块//此方法有三个参数,块是最后一个参数void processArray1(int array[],unsigned int len,FKProcessBlock process){ for(int i=0原创 2016-02-28 15:44:45 · 443 阅读 · 0 评论 -
GCD之阻塞死锁问题以及多个图片下载优化
对于程序猿来说,代码比空白文字来的有力多。#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"看看当前线程:%@",[NSThr原创 2016-02-28 14:12:31 · 890 阅读 · 0 评论 -
GCD之 串行队列,并行队列,全局队列,主线程队列
/* 进程:正在进行中的程序被称为进程,负责程序运行的内存分配 线程:是进程中一个独立的执行路径,负责程序中代码的实际运行 1.一个进程中至少包含一条线程。可以将耗时的执行路径放在其他线程中执行 2.创建线程的目的就是为了开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行。 3.线程没有完成之前不能被杀掉,但是可以暂停,休眠。 4.并发:指两个或多个原创 2016-02-27 20:03:24 · 873 阅读 · 0 评论 -
浅谈Block
#import "ViewController.h"@interface ViewController ()//在代码块中可以使用和改变全局变量@property(nonatomic,assign)int g;@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad];原创 2016-02-27 10:07:21 · 352 阅读 · 0 评论 -
iOS_Block界面传值
使用Block进行界面之间的传值代码比较简洁,下面请看具体代码:1.创建两个控制器JYRootViewController和JYDetailViewController2.AppDelegate.m- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)原创 2016-03-11 21:53:36 · 464 阅读 · 0 评论 -
iOS_Block详解2(解决循环引用)
请仔细看代码:/* 1.Block对象通常会使用外部创建的其它变量(基本类型的变量,或者指向其他对象的指针)---》外部变量。 2.当执行block对象时,为了确保其下的外部变量能够始终存在,相应的block对象会捕获这些变量。 1)对基本类型的变量,捕获意味着程序会拷贝变量的值,并用Block对象内的局部变量保存。 2)对指针类型的变量,block对象会使用强引用。意味着原创 2016-03-11 20:47:55 · 558 阅读 · 0 评论 -
在Xcode7/7.1中使用Http请求,App Transport Security has blocked a cleartext HTTP (http://) resource load sin
iOS9引入了新特性App Transport Security (ATS)。新特性要求App内访问的网络必须使用HTTPS协议。1.Xode7在Info.plist中add Row添加NSAppTransportSecurity类型Dictionary。在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolea转载 2015-12-22 10:45:24 · 471 阅读 · 0 评论 -
iOS_Block详解1
1.Block是对象,它封装了一段代码。block可以作为函数参数和函数返回值。2.Block可以访问局部变量,但不能修改(用__block或者static描述变量就可以修改了) 不能修改是因为系统在定义块时就会把局部变量的值保存在块中,不是等到执行的时候才去读取局部变量的值。3.使用Block的时候注意循环引用问题下面我们通过代码来看一看。-(void)test1{原创 2016-03-11 19:11:14 · 363 阅读 · 0 评论 -
iOS NSOperation之详解1(NSInvocationOperation,NSBlockOperation,设置依赖)
1.NSOperation本身是抽象基类,因此必须使用它的子类。2.Foundation框架提供了两个具体子类供我们使用:NSInvocationOperation和NSBlockOperation3.我们也可以自定义子类继承NSOperation,重写mian()方法即可。下面我们通过实际代码一个一个来理解:1.使用系统提供的两个子类:NSInvocationOperation和原创 2016-03-11 09:37:33 · 1026 阅读 · 0 评论 -
instancetype和id的区别
instancetype:使那些非关联返回类型方法返回所在类的类型。instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型, 运行时检查类型.举个简单例子:NSString *str = [Person person];NSLog(@"%lu", str.length);对于以上代码,如果[Person person]返回值原创 2016-02-26 10:53:56 · 407 阅读 · 0 评论 -
iOS之键盘弹出视图上移
有时候搞开发会碰到一个问题,就是当点击一个UITextField时,弹出虚拟键盘会将这个文本控件遮住。这无论从开发角度还是用户体验来说,都是不行的。其实要解决这个问题也是很简单的,只要获取键盘没弹出前键盘的Rect,键盘弹出后键盘的Rect,其实最主要的变化还是在于Y值嘛,所以只要两者相减就能得到需要移动的距离,然后做个动画就OK了。那具体代码如下:#import "Vie原创 2016-04-01 12:40:50 · 19717 阅读 · 0 评论 -
Category(类别)和扩展(Extension)的区别
类别:1.类别不能为已存在的类添加实例变量。2.类别中添加的方法优先级高,会覆盖原类中的方法3.原类中的私有方法,可以在类别中定义一下,这样就可以使用了。4.在categroy中定义的方法可以被子类继承。扩展:1.扩展中可以定义属性,变量,和方法2.扩展中定义的属性和方法不能被子类继承3.扩展中只能对自定义的类添加方法,不能对系统类添加方法。原创 2016-03-20 12:01:50 · 1003 阅读 · 0 评论 -
iOS中堆和栈的区别
转载地址:http://www.cnblogs.com/iphone520/p/3355460.html管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来讲,释放工作有程序员控制,容易产生memory Leak。申请大小:栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶上的地址和栈的最大容量是系统预先规定好的,在Windows下,栈的大...转载 2016-03-20 08:56:33 · 333 阅读 · 0 评论 -
iOS手动内存管理之对象持有对象可能存在的内存泄露问题
在手动内存管理中,很容易引发内存泄露。如下代码解决了上一篇文章中可能存在的问题。详情请仔细阅读main.m文件1.FKItem的代码如上一篇不变2.FKUser.m文件中setItem:方法作如下修改-(void)setItem:(FKItem *)item{ if(_item1!=item) {// //让item的引用计数+1//原创 2016-03-01 09:16:28 · 812 阅读 · 0 评论 -
如何使用xcode配合instruments分析iOS内存泄露
http://jingyan.baidu.com/article/acf728fd4a6c80f8e410a344.html转载 2016-03-14 21:49:14 · 328 阅读 · 0 评论 -
HTTPS原理剖析
HTTPS 超文本传输安全协议: Hypertext Transfer Protocol Secure, 是一种网络安全传输协议。在计算机网络上, HTTPS经由超文本传输协议(HTTP)进行通信, 但是利用SSL/TLS来加密数据包。本质就是在TCP运输层和HTTP应用层之间加了一层安全机制。目的是提供对网络服务器的身份认证, 保护交换数据的隐私和完整性。为何需要HTTPS? 不使用SS原创 2017-03-16 18:51:50 · 636 阅读 · 0 评论 -
NSString使用大全
字符串截取,比较,去除空格, 遍历,拼接,类型转换原创 2016-07-18 16:08:21 · 1123 阅读 · 2 评论 -
iOS PureLayout的基本使用(一)
AutoLayout是从iOS6开始苹果引入来取代autoresizing的新的布局技术,现在用的比较多的可能是Masonry和PureLayout。今天主要讲讲如何使用PureLayout,它比Masonry更加轻量级,只是以category的形式辅助苹果已有的NSLayoutContraint,使用起来也非常方便。1.首先了解一下如下几个枚举:1)ALEdge: 分别是左,右,原创 2016-07-01 09:51:06 · 2976 阅读 · 0 评论 -
iOS 设备信息
在iOS开发中,有时候我们需要使用跟设备相关的一些信息,下面就详细介绍一下设备相关信息:1.获取当前设备所有者名称:2.获取设备的类别,是iPhone,iPod,还是iPad这里要获取iPhone的具体类型,要有如下代码:- (NSString *)deviceString { // 需要#import "sys/utsname.h" st原创 2016-07-07 10:45:56 · 1212 阅读 · 0 评论 -
iOS_Runtime修改变量值,交换方法实现,动态添加类,成员变量和方法
Runtime修改变量值,交换方法实现,动态添加类,成员变量和方法原创 2016-07-27 11:36:38 · 8261 阅读 · 0 评论 -
iOS_Runtime
Runtime,获取成员变量,属性,方法,协议。原创 2016-07-22 16:04:43 · 1159 阅读 · 0 评论 -
UIWebView的基本介绍(一)
现在App开发混合式开发还是比较常见的,即传统模式与PC网页端相结合。那iOS中就必须得提一下UIWebView这个控件了。在一些媒体资讯类的新闻详情页中尤为常见。既能够提高开发效率,又有非常良好的用户体验。那下面就详细介绍一下UIWebview这个控件。1. 首先还是有必要了解以下几个事情的: (1)//自动对页面进行缩放以适应屏幕 @property(non原创 2016-05-05 21:29:26 · 598 阅读 · 0 评论 -
Mac终端(Terminal)自定义颜色,字体,背景
使用Mac作为开发机的时候,苹果终端自带的颜色黑白,字体又小,看起来确实不是很舒服。那推荐大家使用Solarized配色方案。Solarized 是目前最完整的 Terminal/Editor/IDE 配色项目,几乎覆盖所有主流操作系统(Mac OS X, Linux, Windows)、编辑器和 IDE(Vim, Emacs, Xcode, TextMate, NetBeans, Visua原创 2016-05-27 19:28:00 · 54251 阅读 · 5 评论 -
UITableView基本使用(二)
上篇博客讲解了UITableView的最基本的使用,这篇博客做一些补充。有时候我们需要实现这样的功能:1.比如改变系统自带的选中cell的颜色: 可以在cellForRowAtIndexPath代理方法中创建cell时,自定义一个UIView,frame等于cell.frame,然后设置这个自定义View的背景色。代码如下://cell选中时任意颜色 cell.原创 2016-05-02 15:06:12 · 4344 阅读 · 1 评论 -
UITableView基本介绍(一)
上篇博客大致讲解了UIScrollView的使用,相信大家对于UIScrolView已经有一定了解了。那其实在实际的开发中,我们使用更多的可能还是UITableView。学会使用UITableView还是非常重要的,今天就仔细讲解一下UITableview的实际使用。1.先从最基本的使用开始。首先要知道几个事情:(1)UITableView有两种样式:(普通样式)UITableViewSt原创 2016-05-02 10:58:27 · 3619 阅读 · 0 评论 -
UIScrollView基本使用(一)
今天这种日子还在写代码的,一定是真爱。好吧我承认闲的无聊。下面讲一讲UIScrollView的基本使用。使用场景:一般当手机屏幕不能完全显示需要展示的内容的时候,就会考虑使用UIScrollView了。 可以通过拖拽将屏幕外的内容显示出来。1.使用前要知道几个属性的含义:(1)CGSize contentSize:这个属性代表可以滚动的区原创 2016-05-01 11:45:50 · 1377 阅读 · 2 评论 -
iOS之Runtime
觉得这个讲的不错,可以去学习一下http://www.samirchen.com/objective-c-runtime/转载 2016-03-12 13:08:31 · 517 阅读 · 0 评论 -
iOS数据持久化之NSKeyedArchiver(归档)
归档可以实现把自定义的对象存放在文件中.注意://遵守NSCoding协议,并实现该协议中的两个方法。下面举个小例子详细介绍如何使用NSCoder1.首先自定义一个Person类#import @interface JYPerson : NSObject//姓名@property(nonatomic,copy)NSString *name;//年龄@property(n原创 2016-01-07 10:23:05 · 483 阅读 · 0 评论 -
iOS数据持久化之偏好设置
iOS中的数据持久化方式:1.plist 文件 2.偏好设置 3.NSKedArchiver(归档)4.SQLite5.CoreData下面详细讲一下偏好设置:/* 1.偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。 2.偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。 3.使用偏好设置对数原创 2016-03-19 09:31:03 · 670 阅读 · 0 评论 -
UIGestureRecognizer,手势处理,点击,长按,拖动,左右划动
对于移动端,由于用户都是通过手指触摸来操作的,所以对于手势的处理是必不可少的。下面详细谈谈有哪几种手势操作。1.点击,长按,拖动,左划,右划(上划下划)。2.闲话不多说,直接看代码。#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageVi原创 2015-12-27 10:03:24 · 2120 阅读 · 0 评论 -
iOS,UIAlertController
在IOS8之后,UIAlertController替代了UIActionSheet和UIAlertView.由一个控制器来管理 操作方便, 而且每个功能键都很清晰。不再使用delegate的方式来触发回调1.直接上代码:#import "ViewController.h"@interface ViewController ()@end@implementation ViewCo原创 2015-12-26 15:36:29 · 650 阅读 · 0 评论 -
iOS,UITableView详细介绍之自定义Cell(二)
在iOS开发中,对于UITableViewCell自带的属性可能满足不了实际需求,所以需要自定义Cell。1.2.ViewController.m#import "ViewController.h"#import "JYTableViewCell.h"#import "JYModel.h"@interface ViewController ()//显示的数据源(实际项原创 2015-12-24 22:58:18 · 757 阅读 · 0 评论 -
iOS,UITableView详细介绍之基本使用(一)
iOS中,UITableVIew的使用是非常常见的,下面就来详细介绍一下1.UITableView必须实现两个代理:UITableVIewDataSource,UITableViewDelegate2.UITableView的三个关键代理方法是: (1)-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView原创 2015-12-23 16:56:52 · 815 阅读 · 0 评论 -
iOS,沙盒,做数据持久化的时候,有时候需要查看沙盒路径
1.直接上代码 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDir=[paths objectAtIndex:0]; NSLog(@"我看看路径%@",documentDir); retu原创 2015-12-23 10:54:09 · 380 阅读 · 0 评论 -
iOS,Xcode7真机调试
升级Xcode7后,真机调试不像以前那么麻烦了,下面详细介绍如何真机调试。1.打开要真机测试的程序,插上手机并选择手机调试。2.选中程序,点击xcode,选择preferences3.选择accounts,点击+号,增加apple id。出现free,表示ok了。4.选择程序,随便填写一个 Bundle Identifier。(Team选项不用写)原创 2015-12-19 08:51:00 · 433 阅读 · 0 评论 -
iOS,如何卸载模拟器上安装的程序
点中模拟器,按住快捷键:shift+command+h ,然后长按要删除的程序logo即可。原创 2016-01-02 10:49:30 · 1695 阅读 · 0 评论 -
The identity used to sign the executable is no longer valid
我碰到这个问题的真实情况是:某天我的手机在一个朋友的mac上运行了一个程序,结果我的手机回到自己电脑上运行程序时就报了这个错。并且收到了一封email。说明:个人开发者的帐号只能绑定一台电脑,当另外一台绑定了的话,你的就失效了。解决:我修改了一下我的Bundle Identifier ,原先是gujinyue ,改成了gujinyue1.就ok了。原创 2016-01-01 12:44:53 · 322 阅读 · 0 评论 -
iOS,导航条自定义返回按钮后失去侧滑功能完美解决方案
在平时做项目时,有时候需要自定义导航条的返回按钮,这个时候会发现失去了系统自带的手势侧滑返回功能,网上很多解决方法效果是实现了,但是有卡顿现象。下面的代码将完美解决这个问题:/** * 是否正在手势返回中的标示状态 */static BOOL _isPoping;-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *原创 2015-12-30 16:09:59 · 2798 阅读 · 0 评论