- 博客(91)
- 资源 (8)
- 问答 (2)
- 收藏
- 关注
原创 iOS 中block的循环引用问题
开发中经常使用weakSelf和strongSelf来解决block的循环引用问题,但是是不是所有的block都会导致循环引用呢?显然不是的,那么怎么判断调用一个带有block方法时是否会造成循环引用呢,我们来分析一下。首先我们来写一个含有block的类,并调用自己,然后在外部实现这个block,来测试什么情况会出现循环引用。@interface ALDTestBlockModel ()@...
2018-12-20 15:30:26
926
2
原创 Mac下使用webstorm和Charles搭建本地服务器使手机可访问本地html网页
写了一段时间的h5,页面主要是在手机App中使用,直接用谷歌的模拟器调试是比较方便,但有时候在谷歌浏览器中生效的在手机上不生效,这就比较烦,要想看手机上的效果就得发布到服务器上,还有问题又得重新改,然后重新发布再测试,很麻烦。之前一直想用XAMPP搭建一个本地服务器,然后让手机访问,找了一堆教程,经过一系列繁杂的配置,也终于成功了,但因为电脑连的WiFi,第二天打开电脑,发现ip变了,果断的访问...
2018-12-14 10:39:33
3073
原创 iOS中FMDB的使用
在iOS开发中,如果本地需要做大量的缓存,FMDB用的是比较多的,怎么集成到项目中我这里就不说了,主要说一下FMDB使用的一个思路和自己遇到的坑。在我自己开发聊天系统的时候,我一般是用FMDB用来缓存最近联系人列表和用户的聊天消息列表。因为聊天系统,涉及到的读和写比较频繁,所以我会封装一个单例类用来处理每个部分的数据存储和读写。下面是用来管理最近联系人缓存的功能实现,其余的模块也可以按照这样的...
2018-11-11 19:52:50
2953
原创 GCD常用方法及应用场景
开发过程中,出现耗时操作造成界面卡顿是常见的问题之一,问题原因就是因为耗时操作阻塞了主线程,所以要解决这类问题最简单的就是引进子线程,将耗时操作移出主线程,耗时操作完成后回到主线程中更新UI。 之前在做一个通讯录的时候,由于需要自己进行排序,所以第一次时需要将几千条的数据都拉下来然后处理,这是非常耗时的,直接放在主线程中网络请求然后各种处理数据会让界面卡死3到5秒。后来使用GCD的并发队列异步处...
2018-08-30 15:44:42
2104
原创 iOS中主队列的同/异步执行
主队列是主线中的一个串行队列,通常我们刷新UI都会回到主队列。下面我们来看一下主队列同步执行和异步执行会产生什么样的效果。主队列,异步执行//主队列+异步执行//不会开启新的线程,任务顺序执行-(void)test5{ NSLog(@"主队列+异步执行"); //global_queue 主队列 dispatch_queue_t queue = dispat...
2018-08-30 13:26:58
2989
2
原创 多线程中队列和同/异步执行问题
队列分为并行队列和串行队列,执行方式分为同步执行和异步执行,那么组合一下就有四种方式,下面我会用GCD来验证和总结一下各个组合的特性。并发队列,同步执行//并发队列+同步执行//不会开启新线程,任务顺序执行-(void)test1{ NSLog(@"并发队列+同步执行"); //DISPATCH_QUEUE_CONCURRENT 并发队列 dispatch...
2018-08-30 11:47:28
1862
原创 iOS UI入门——Objective-C和Swift下UITabBarController的使用
很多App启动页过后展示的就是选项卡也就是UITabBarController,这里讲的是最简单的选项卡的实现,直接继承自UITabBarController。Objective-C代码:#import "MainTabBarViewController.h"#import "HomeViewController.h"#import "UserCenterViewControlle...
2018-07-19 11:07:09
967
原创 iOS UI入门——Objective-C和Swift下UIPageControl的使用
UIPageControl就是我们常说的小白点,常用于轮播图,与UIScrollView一起使用。效果如图: Objective-C代码:#import "ViewController.h"@interface ViewController ()<UIScrollViewDelegate>@property(nonatomic,strong) UIScrollVi...
2018-07-12 10:56:43
1553
原创 iOS使用UIScrollView实现图片循环滑动的思路解析
一组图片循环滑动在开发中经常用到,App的欢迎页、广告banner等等都会用到。成熟的第三方也比较多,个人用的比较多的是JCTopic,这个很轻量级,代码也不多,用起来也是比较方便。 看过源码之后整理了一下实现的思路和原理,我们先来分析一下我们要实现的这个功能——图片循环轮播,看到这个需求我们想到的就是一组图片能够左右滑动,并且无限循环。 要实现这个功能,我们肯定需要一个可滑动的view,那么...
2018-07-11 16:46:00
3533
原创 iOS常用方法——一个好用的获取导航栏高度和Tabbar高度的分类
开发中经常需要知道导航栏(系统)的高度和Tabbar的高度,一般是用来计算在ViewController中的位置和高度,我们可以写一个UIVIewController的分类,这样在调用的时候就很方便。代码如下:#import "UIViewController+MYViewControllerBar.h"@implementation UIViewController (MYViewC...
2018-07-10 10:06:11
16764
原创 Swift Mark的使用
在用Objective-C开发iOS的时候,常常用到#pragma mark -,使用Mark可以让代码看上去整洁,提高了代码的可读性。 最近开始写Swift,发现不能再这样写了,这样写直接报错。Swift下的Mark://MARK:-阅读代码时,我习惯先看每个类中的方法,只要方法名不是乱起,一般看完方法名基本知道这个类主要是干什么以及它的实现逻辑,所以加了Mark能让代码更清晰,这...
2018-07-09 16:14:59
3599
原创 iOS UI入门——Swift下WKWebView的使用
之前有写过Objective-C语法下WKWebView的使用,基本包含了界面和与h5的交互,这里主要写Swift语法下WKWebView的使用。直接上代码吧,说明基本都在注释里。import UIKitimport WebKitclass ViewController: UIViewController,WKUIDelegate,WKNavigationDelegate,WKScr...
2018-07-09 15:08:55
9142
原创 iOS UI入门——使用Objective-C和Swift实现警告视图和操作列表(UIAlertView,UIActionSheet,UIAlertController)
警告弹框和操作列表在开发中常用到,iOS9之后,UIAlertView和UIActionSheet都会报黄色的警告,但是还是依然可以使用的。在这里主要介绍一在这三个控件在Objective-C和Swift下的使用代码。Objective-C代码:#import "ViewController.h"@interface ViewController ()&lt;UIAlertView...
2018-07-09 14:53:33
559
原创 iOS常用方法——UIWebView全屏显示的实现
项目中加载webView,导航栏由web端做的话,客户端就需要隐藏掉导航栏。这个时候显示出来的页面,在顶部会出现状态栏为空白的问题。底部也会多出空白,即:- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a ...
2018-07-05 17:49:43
6982
原创 Mac下使用终端查看某个端口号对应的进程和杀死进程
查看端口号对应的进程打开终端,输入lsof -i tcp:port,port即为端口号,如5037 如果端口号未被占用,回车之后结果如图: 如果端口号被占用,则会出现占用该端口号的进程和进程的id,举个例子: 这样我们就可以根据进程id来杀死进程了。杀死端口号对应的进程如果某个端口号正在被使用,使用上面的命令就可以查看到具体的进程,想要杀死这个端口号对应的进程,就需要用到...
2018-07-05 15:47:47
31775
2
原创 【Android学习笔记】Android Studio打包生成apk
使用Android Studio生成安卓手机的安装包,步骤如下:使用Android Studio打开项目,选择Build—>Generate Signed APK 点击后弹出如下的图,选择Module,然后点击next: 重点来了,如果首次进行打包,那么看到的弹框将会是如下图: 首次打包,我们需要生成一个key,点击Create new…弹出一个新界面: 点击Key s...
2018-07-04 16:42:16
11891
原创 iOS开发iPhone竖屏icon尺寸与启动页尺寸汇总
我比较喜欢在TARGETS的General中设置icon和启动页,也就是如下图的地方: 可能很多人喜欢用LaunchScreen.xib来设置启动页,但是只设置一个的话,可能图片的大小很难适配所有的尺寸。我比较喜欢用Assets来设置,每个系统给对应的尺寸。 下面是我汇总的尺寸,按照所给的尺寸来切图,icon和启动页可以正常显示。icon尺寸: 40x40 60x60 58x5...
2018-07-03 17:03:57
1964
原创 iOS常用方法——WKWebView与h5交互的实现
随着前端开发的强大,原生与h5的交互用的也越来越多。 为什么选用WKWebView,我们可以做一个对比,同一个web页面,用UIWebView加载和用WKWebView来加载,内存占用情况很容易看出来,回到原生页面之后,UIWebView对应的内存也不会降下来。从性能而言,个人觉得能用WKWebView就不要用UIWebView。 UIWebView与h5的交互方式和WKWebView与h5的...
2018-07-03 15:44:57
5294
原创 iOS常用方法——WKWebView缓存清理的实现
WKWebView是iOS8之后出现的,相较于UIWebView,WKWebView占用的内存更小,还有一些其他的优化。但是如果我们不去主动清理webView产生的缓存,两者都会存在缓存这个问题。比如说一个网页改了一些内容,如果不清理缓存,可能很长一段时间我们都没办法看到新的内容,唯一的办法是卸载重装。 为了能让用户第一时间能看到内容的更新,我们在开发的时候,每次打开网页的时候应该先清理一下缓存...
2018-07-03 14:09:41
10399
原创 iOS UI入门——使用Objective-C和Swift实现自定义的UITableViewCell
接着上篇的UITableViewCell的基类,这里自定义的UITableViewCell都继承上篇的BaseTableViewCell。Objective-C代码:自定义cell:#import &quot;CustomTableViewCell.h&quot;@interface CustomTableViewCell ()@property(nonatomic,strong) UIIma...
2018-07-02 13:30:11
1098
原创 iOS UI入门——使用Objective-C和Swift含tableViewCell的UITableViewCell基类的实现
继承是面向对象语言的一种特性,在开发中经常用到。基类的存在也大大的方便了开发,能减少很多重复的代码。Objective-C代码:#import "BaseTableViewCell.h"@implementation BaseTableViewCell-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseId...
2018-07-02 09:41:10
1096
原创 iOS UI入门——使用Objective-C和Swift简单实现UITableView
Objective-C代码:#import "ViewController.h"@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>@property(nonatomic,strong) UITableView * tableView;@property(nonatomic,s...
2018-06-29 14:27:31
1123
原创 iOS UI入门——使用Objective-C和Swift简单实现UIScrollView
Objective-C代码:@interface ViewController ()<UIScrollViewDelegate>@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after lo...
2018-06-28 14:46:02
451
原创 iOS UI入门——使用Objective-C和Swift简单实现UITextField
Objective-C代码:设置代理:@interface ViewController ()&lt;UITextFieldDelegate&gt;UITextField相关设置:-(void)setupTextField{ //初始化 UITextField * testTextField = [[UITextField alloc] initWith...
2018-06-27 14:55:32
457
原创 iOS UI入门——使用Objective-C和Swift实现UIButton的显示和点击事件
Objective-C实现UIButton的显示和点击事件-(void)setupButton{ //初始化button UIButton * testButton = [UIButton buttonWithType:UIButtonTypeCustom]; //设置位置和大小 testButton.frame = CGRectMake(20, 300...
2018-06-26 15:36:00
2106
原创 iOS UI入门——使用Objective-C和Swift实现UIImageView显示图片
1.单张图片的显示Objective-C代码:-(void)setupImageView{ //初始化一个imageView UIImageView * testImageView = [[UIImageView alloc] initWithFrame:self.view.frame]; //设置imageView的图片 testImageView...
2018-06-26 14:43:50
3050
原创 iOS UI入门——使用Objective-C和Swift实现UILabel显示文本
UILabel是很常见的UI控件,用到的地方很多。 Objective-C实现UILabel显示静态文本:-(void)setupLabel{ //初始化一个UILabel并确定它的坐标 UILabel * testLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 130, 120, 40)]; //设置背...
2018-06-26 11:29:55
972
原创 iOS UI入门——使用Objective-C和Swift简单实现UIView的显示
刚开始写Swift,还是有很多不习惯,客户端毕竟是显示为主,所以UI部分很是重要,网上讲Swift语法的有很多,但是系统的讲UI的不是很多(也可能是我自己没找到)。所以我就自己写一个iOS的UI系列,对比着Objective-C写Swift,希望对像我一样刚入门Swift的小伙伴有所帮助~ Objective-C代码实现UIView:-(void)setupView{ //初始化一个...
2018-06-26 10:59:12
2475
原创 iOS常用方法——获取沙盒中的几个目录路径
开发中常遇到需要缓存的需求,缓存的时候我们就需要有一个路径,下面的代码是获取沙盒中的路径的方法: //获取沙盒主目录路径 NSString * homeDirectory = NSHomeDirectory(); NSLog(@"home === %@",homeDirectory); //获取Documents目录路径 NSArray * docum...
2018-06-25 14:40:27
3370
原创 iOS常用方法——动画点击事件的实现
动画的实现我们一般都用UIImageView,比如之前博客中的直线等动画,现在想要给在动的的图片添加一个点击事件。 当时做这个功能的时候试过很多方法,但是有些确实不行,有些时候我不知道别人在写博客的时候是怎么想的,或者真的没有亲自试过,或者是代码太老了无效?有些文章中给出的代码确实跟文章介绍的功能不一致,我觉得最好是自己试过,保证能实现自己所说的功能,这是最基本的。毕竟别人找资料要一个一个试,分...
2018-06-25 14:15:00
2115
原创 iOS常用方法——基于AFNetworking的post、get方法的封装及获取当前网络状态的实现
AFNetworking是一个常用的网络请求库,每个项目的网络请求和返回格式不同,AFNetworking返回的通用型的,我们可以封装一层,让其更适合我们自己的项目。 实现代码:#import &lt;Foundation/Foundation.h&gt;typedef void (^RequestCompleteBlock)(id response);typedef void (^...
2018-06-22 05:38:52
1122
原创 iOS常用方法——一个好用的获取View的位置和大小的类
在写代码的时候我们如果用frame进行布局的话,经常会用到像self.view.frame.size.width这样的语句来获取我们想要的位置或者大小的值,这个语句调用的时候很繁杂,下面是我封装的一个类,很简洁的代码就可拿到自己想要的值。 给UIVIew添加一个分类,因为UI基本都继承自UIView,写在UIVIew的分类中UI类都可调用。#import &lt;UIKit/UIKit.h&...
2018-06-21 17:20:56
5466
原创 iOS常用方法——十六进制颜色值转换为UIColor
字符串十六进制颜色值转换为UIColor:/** 16进制颜色转换为UIColor @param hexColor 16进制字符串(可以以0x开头,可以以#开头,也可以就是6位的16进制) @param opacity 透明度 @return 16进制字符串对应的颜色 */+(UIColor *)colorWithHexString:(NSString *)hexColo...
2018-06-21 17:07:59
6271
原创 iOS常用方法——字符串中含某个子字符串高亮效果的实现
我们在使用Google进行搜索时会看到搜索的关键字高亮的效果: iOS客户端字符串中子字符串实现的代码:+(NSMutableAttributedString *)stringWithHighLightSubstring:(NSString *)totalString substring:(NSString *)substring{ NSMutableAttributedSt...
2018-06-21 16:56:07
2855
原创 iOS常用方法——计算字符串显示的大小
UILabel固定宽来获取高度或者固定高来获取宽度:-(CGSize)sizeWithStringShowSize:(CGSize)size showFont:(CGFloat)font{ //固定宽获取高度size:CGSizeMake(100, MAXFLOAT) //固定高获取宽度size:CGSizeMake(MAXFLOAT,100) CGSize s...
2018-06-21 16:29:32
1542
原创 iOS常用方法——NSDate常见处理的方法封装
NSDate转换为时间戳+(NSString *)dateChangeToTimestamp:(NSDate *)date{ NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[date timeIntervalSince1970]]; return timeSp;}时间戳转换为NSDate...
2018-06-21 16:13:48
601
原创 iOS常用方法——判断图片类型
直接用图片的后缀来判断图片的类型不一定准确,用下面的方法可以准确的判断出图片的类型。+(NSString *)contentTypeForImageData:(NSData *)data{ uint8_t c; [data getBytes:&c length:1]; switch (c) { case 0xFF: r...
2018-06-21 15:57:27
2330
原创 iOS常用方法——sha1编码和MD5编码
对string进行sha1编码:-(NSString *)stringWithSha1Encode{ const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:self.length]; ...
2018-06-21 15:43:35
1011
原创 iOS常用方法——URL编码和URL解码
URL编码是一种常见的编码方式,作用不多说,直接上代码。URL编码: - (NSString *)URLEncodedString{ // CharactersToBeEscaped = @":/?&=;+!@#$()~',*"; // CharactersToLeaveUnescaped = @"[]."; NSString *unencode...
2018-06-21 15:25:04
12915
1
原创 iOS常用方法——NSArray、NSDictionary与json的相互转换
开发中常用到NSArray、NSDictionary转换为json格式和json解析为NSArray、NSDictionary。不多说,直接上干货。NSArray、NSDictionary转换为json:+(NSString *)objectToJson:(id)obj{ if (obj == nil) { return nil; } NSE...
2018-06-21 15:00:37
12289
Mac 免费清理软件
2018-07-06
WKWebView与h5交互的实现
2018-07-03
Swift实现自定义tableViewCell
2018-07-02
iOS六种动画效果的实现
2018-06-21
iOS自定义表情的实现
2018-06-21
java后台无法取到AFNetWorking post过去的参数
2017-08-23
iOS审核最近很严很严吗?
2017-08-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人