宏简介: 宏是一种批量处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。编译器...
一、概述 1)队列用来存储代码任务,线程用来运行代码任务; 2)main()函数作为程序入口,整个程序默认运行在主线程中,程序代码任务默认存放在主队列中; 3)以下所谓阻塞线程是针对主线程而言(子线程阻塞在所不...
1:时间戳转NSDate NSString *timeStamp =@"1545965436"; NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeS...
一、UIScrollView是什么? 1、UIScrollView是滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能。 2、UIScrollView是所有滚动视图的基类。...
最近在项目中用到了手势操作,键盘回收时还是挺常用的,现在总结下,多谢网络上大神们的分享。 先分享下我在项目中用的代码: UITapGestureRecognizer * mytap=[[UITapGestureR...
以前用得不多,先开一篇,以后有遇到再补充。 1、返回 2、JS 调用 OC 3、获取、修改、添加网页信息 1、返回 if (self.mWebView.canGoBack == YES) { [self...
1.、首先,Controller需要实现两个 delegate ,分别是 UITableViewDelegate 和 UITableViewDataSource2、然后 UITableView对象的 delegate要设...
1. NSAssert 断言(NSAssert)是一个宏,在开发过程中使用NSAssert可以及时发现程序中的问题。 NSAssert声明如下: #define NSAssert(condition, de...
最近项目中用到了iPad驱动硬件来工作,也就是智能硬件的实现。下面简单说下原理,详细说下socket,wifi通信,数据处理接收,发送,以及数据解析代码。 首先,来说下通信。因为硬件部件比较多,我们采取的是,iPad与主...
由于最近开发的几个项目都有渐变导航栏,每次写的时候都要copy一堆关于导航渐变相关的代码,显得类很冗余,所以花了点时间封装了一个渐变类,直接继承就可以满足大部分需求啦,这里简单写一下心路历程: 渐变的核心几个部分: 1....
以前用得不多,先开一篇,以后有遇到再补充。 1、JS 调用 OC 1-1)、添加 和 JS 约定的消息名 [self.userContentController addScriptMessageHandler:self ...
公司项目中有一个功能,保存授权令牌数据。最开始只有一条数据,所以就直接保存在了userdefaults中。后来需要两条数据,还是保存在userdefaults中,其中一条为固定的,另一条不固定可以进行替换或删除。最近又需...
官方将通知单独放在了UserNotifications.framework,使用时需要导入框架。UserNotifications.framework主要类文件: UNCalendarNotificationTri...
首先,先总结一下如何获取Documents目录,在ios开发中,我们经常需要检索Documents目录的完整路径以便读取和写入文件,我总结了以下两种方法: 1、NSString *documentsDirect...
NSString* str=@"hello";//存在代码区,不可变 NSLog(@"%@",str); //1.【字符串插入】 NSMutableSt...
说明:阅读本文,请参照之前的block文章加以理解; 一、循环引用的本质 //代码——ARC环境 void test1() { Person *per = [[Person alloc] init]...
说明: 阅读本问,请参照block前述文章加以理解; 环境:ARC; 变量类型:基本数据类型或者对象类型的auto局部变量; 一、三种情形 //代码 void test1() { int nu...
最近项目中,来了一新同事,协同开发的过程中,发现老是提示pod install,于是照做了,做完项目可以跑成功但发现提示我跟同事一样的问题,Podfile.lock文件需要提交,于是便提交了,然而同事拉取了我的提交日...
项目中、需要客户端生成一个唯一的识别码 let uuid = UUID().uuidString print(uuid)
说明: 阅读本文章,请参照前面的block文章加以理解; 本文的变量指的是auto类型的局部变量(包括实例对象); ARC和MRC两种模式均适用; 一、无法修改的原因 //代码 很明显,强行给age赋值会...
NSString *string = @"123"; // 1.字符串转int int intString = [string intValue]; // 2.int转字符串 NSString *stringInt...
终于抽出时间来学习自动化打包了,app在测试阶段一天总会经历好几次的打包,每次打包真是身心疲惫,刚打完的包说不定就被测试妹子反应还要微调什么地方,我就真的有气没法出,打一次包怎么也得浪费十几分钟,还不能改动自己的项目...
在 Info.plist 中添加如下配置 UIViewControllerBasedStatusBarAppearance false/>
序言 之前也面试别人,现在轮到自己找工作,怎么说呢,现在轮到自己出去面试,怎么说呢,其实还是挺紧张的,原以为自己不会因此紧张或者焦虑,实际上,还是有的,在没找到合适的工作的时候,甚至晚上有点睡不着觉,总觉着有什么事压在心...
Swift中Array的删除对象 在Swift中数组Array没有removeObject的方法 1、找到下标 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px M...
说明:阅读本文章,请参考之前的block文章加以理解; 一、栈区block分析 //代码 //ARC void test1() { { Person *per = [[Perso...
Swift中Array的删除对象 在Swift中数组Array没有removeObject的方法 1、找到下标 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px M...
实际开发中都是多控制器的;用一个控制器(父)管理多个控制器(子) ios提供2个特殊的(父)控制器 UINavigationControler 简介 导航控制器,可以轻松完成多个控制器之间的切换,其结构包...
在日常的开发中,多控制器之间的跳转除了使用push的方式,还可以使用 present的方式,present控制器时,就避免不了使用 presentedViewController、presentingViewContro...
说明: 阅读本文,最好阅读之前的block文章加以理解; 本文内容:三种block类型的copy情况(MRC)、是否深拷贝、错误copy; 一、MRC模式下,三种block类型的copy情况 //代码 ...
1、UITableView 的编辑模式 进入编辑模式 代码体现 // 设置 editing 属性 tableView?.editing = true // 这个设置的时候是有动画效果的 tableView...
今天做项目的时候遇到一个需求,就是子view视图弹出时,屏蔽掉父view的所有手势,然后想到用 UIGestureRecognizerDelegate代理方法,中间省一些文字(无奈脸),言归正传,NSStringFrom...
一、oc代码 提示:看本文章之前,最好按顺序来看; //代码 void test1() { int age = 10; void(^block1)(void) = ^{ ...
本文用来介绍 iOS 多线程中 GCD 的相关知识以及使用方法。这大概是史上最详细、清晰的关于 GCD 的详细讲解+总结的文章了。通过本文,您将了解到: 1. GCD 简介 2. GCD 任务和队列 3. GC...
dispatch_sync 线程同步、dispatch_async线程异步 //同步 dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_...
一、代码 说明:本文章须结合文章《block本质探寻一之内存结构》和《class和object_getClass方法区别》加以理解; //main.m #import int a = 10; stat...
一、代码——命令行模式 //main.m #import struct __block_impl { void *isa; int Flags; int Reserved; ...
快速定位iOS线上App崩溃在哪个控制器里面,需要和后台配合使用 下载本项目并添加手动添加到项目里 新建所有的页面都继承于YZViewController 在AppDelegate的didFinishLa...
框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像、声音文件等其他资源。 共享资源库定义应用程序可以调用的函数和方法。 iOS 提供了许多可在应用程序开发中使用的框架。 要使用一个框架...
一、 简述 Xcode 提供了对象库,您可以将库中的对象添加到串联图文件。其中的一些对象属于视图中的用户界面元素, 例如按钮和文本栏。其他对象为高级对象,例如视图控制器和手势识别器。 二、添加用户元素 ...
Xcode 是 Apple 的集成开发环境(又称 IDE),用于 iOS 和 Mac OS X 的开发。在 Mac 上安装 Xcode,也会同时安装了 iOS SDK, 它包含了iOS 平台的编程...
友盟的错误分析越来越人性化了 前提集成了友盟统计,并打包的时候保留了.dSYM文件 先看看效果 可以看到bug显而易见的被发现了!那个文件夹,那一行代码 那么怎么才能这样呢 首先加入符号表,就是.dSYM文件,对应...
背景 在iOS开发中如果我们想给一个对象动态添加属性或者给category添加属性的时候,都是通过runtime的关联对象去实现,那我们添加的属性到底是如何存取的呢?是直接添加到了对象自...
在开发中,经常在需要用户注册的时候会需要实现验证码倒计时的功能,下面是解决这个问题的两种思路(使用UIButton控件) 一、利用NSTimer计时器 1.新建一个UIButton按钮...
0. 起源 开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 而作为...
两种抖动 为什么抖动还会有两种? 其实是我碰到过两种抖动的场景,第一个场景是native的抖动,第二个场景是h5的抖动。 native的抖动 前端开发人员会在app中打开web...
前言 排序按钮是实际开发中比较常见的一种控件,最近我也遇到了,今天简单分享下。 虽然功能简单,但是保证你看了不亏,尤其是对UI这块比较薄弱的同学来说。 OK,先看图: ...
一、什么是回调函数? 回调函数,本质上也是个函数(搁置函数和方法的争议,就当这二者是一回事)。由“声明”、“实现”、“调用”三部分组成。 在上面的例子中,我可以看出,函数amount(其实...
先看一下错位的效果: 这本是iOS系统的一个BUG,不过在iOS11.3以后的系统中修复了; 解决办法: 在body标签中添加样式: body { positi...
前言 现在大部分的app只支持iOS8以上的系统了,在接入H5时可以只管最新的WKWebView了。 WKWebView的优势 性能高,稳定性好,占用的内存比较小, 支...
前言 我们的在做动效中经常会有这样的需求,A动画执行完,执行B动画,B动画执行完执行C动画这样的序列,比如如下效果: iOS 10之前,我们可能这样实现这个动画序列,实际上可能你现...
在网上找了许久,一直没有发现有提供横向瀑布流效果的。在项目中用到了我就在垂直瀑布流的基础上,进行了修改,做出了横向瀑布流的效果。同时也对一些UICollectionView的属性进行简单的注释...
前言 UITableView 是在app界面里非常常用的一个控件了,打开一个app,内容列表 作者列表 朋友圈列表等等,,,都离不开 UITableView 。 而 UITableVi...
最近在项目中我们的商品详情页是一个后台返回的图片标签。需要我们自己去写一个HTML5标签进行整合,(相当于重新写了一个HTML页面) :ok_hand:那就没办法了,我就自己写一个标签咯,应...
前言 前不久,伴随着iOS 12版本的发布,苹果升级了Xcode 版本,最新的版本是Xcode 10.1。不过升级后经常会遇到各种编译问题,下面就给大家总结一些常见的错误(我项目遇到的)。 ...
前言 最近工作比较忙,但是还是出来更新博客了。今天博客中所涉及的内容并不复杂,都是一些平时常见的一些问题,通过这篇博客算是对UITableView中使用定时器的几种方式进行总结。本篇博客会给...
在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节。 比如一个Label的默认间...
objc_class结构体 类在OC中是objc_class的结构体指针 typedef struct objc_class *Class; 在objc/runtime.h中objc_class结构体的定义如下: ...
你好2019!一起努力呀! 主要分三种类型: 1、原子操作相关: nonatomic、atomic nonatomic:非原子操作,对属性赋值的时候不加锁,多线程并发访问会提高访问效率 atomic:原子操作,提供多线...
1.使用层面的理解 在这里首先讲如何简单的使用, 仅仅是使用层面(有理解错误的地方帮忙纠正), 然后我们在去理解位运算符! 在下面的图中我们可以看见枚举值中有(位运算符:左移): 如果...