iOS
亚布./
这个作者很懒,什么都没留下…
展开
-
runtime消息发送&消息转发机制底层源码解析
?文章有点长,请做好心理准备...Let`s go! 基于Runtime机制,OC的对象发送消息就会通过一系列操作,根据对象从相应的类中查找方法对应的列表(类即类对象,方法存储在元类的方法列表中),方法列表实质是一个哈希表,通过SEL查找到IMP(即函数指针),返回相应的实现。struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__ Class _Nullable s...原创 2019-08-01 18:36:49 · 452 阅读 · 0 评论 -
Swift 延时执行
采用 GCD 模式调用:// 创建目标队列let workingQueue = dispatch_queue_create("my_queue", nil) // 派发到刚创建的队列中,GCD 会负责进行线程调度dispatch_async(workingQueue) { // 在 workingQueue 中异步进行 print原创 2016-06-09 20:02:02 · 6803 阅读 · 0 评论 -
iOS状态栏&导航栏尺寸(宽度&高度)
iPhone开发当中,有时需要获取状态栏和导航栏高度、宽度信息,方便布局其他控件。下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; NSLog(@"status width - %f", rectStat原创 2016-06-03 11:56:23 · 6187 阅读 · 0 评论 -
iOS开发-SVN管理代码
已经安装了的小伙伴请直接看三步骤一、下载地址CornerStoneV2.6:http://pan.baidu.com/s/1qWEsEbM密码:www.macx.cn二、安装破解方法1、安装之前将本机日期改为未来的某个日期,然后双击安装,按照指定流程操作即可2、如果安装前忘记改日期,则只能通过修改plist的方式进行破解 a.显示系统隐藏文件,转载 2016-05-20 20:22:29 · 1134 阅读 · 0 评论 -
iOS - block
1. Block的声明和线程安全Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非ARC下返回Block)。另一个需要注意的问题是关于线程安全,在声明Block属性时需要确认“在调用Block时另一个线程有没有可能去修改Block?”这个问题,如果确定不会有这种情况发生的话,那么原创 2016-05-18 08:06:06 · 280 阅读 · 0 评论 -
程序启动原理和UIApplication
一、UIApplication1.简单介绍(1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。(3)通过[UIApplicationsharedApplication]可以获得这个原创 2016-05-17 22:08:57 · 1375 阅读 · 1 评论 -
iOS-应用程序生命周期
开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity、Service。今天我们接触一下iOS应用程序的生命周期, iOS的入口在main.m文件:int main(int argc, char *argv[]){ @autoreleasepool {原创 2016-05-17 17:47:55 · 358 阅读 · 0 评论 -
iOS开发真机调试证书导出.p12文件
为什么要导出.p12文件当我们用大于三个mac设备开发应用时,想要申请新的证书,如果在我们的证书里,包含了3个发布证书,2个开发证书,可以发现再也申请不了开发证书和发布证书了(一般在我们的证书界面中应该只有一个开发证书,一个发布证书,没必要生成那么多的证书,证书一般在过期之后才会重新添加。)这时候,再点击“+”时,就会发现点击不了开发和发布证书,也就是添加不了开发证书和发布证书了:原创 2016-05-29 11:59:31 · 2974 阅读 · 0 评论 -
git版本回退
先说今天遇到的问题,看到一个config.php的配置文件一直在修改的状态下,但是和远程的config.php是不一致的,我不需要提交它,但是看它在 modified的状态下,很不爽,想删除它,git rm config.php,然后git push了下,结果不仅把本地的config.php干掉了,把远程的config.php也给干掉了,原来这个git rm有这样的功效,而且我 删除的不只是这一个原创 2016-05-29 02:42:35 · 1271 阅读 · 0 评论 -
Your build settings specify a provisioning profile with the UUID, no provisioning profile was
在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no such provisioning profile was found”的出错。一直提示指定UUID的provisioning profile找不到,感觉很奇怪。明明自己的provisioning prof转载 2016-05-29 01:16:10 · 264 阅读 · 0 评论 -
崩溃日志分析
http://www.jianshu.com/p/12a2402b29c2转载 2016-05-26 15:26:14 · 315 阅读 · 0 评论 -
swif 中如何使用NSClassFromString
跟OC中的使用有点区别。let accessoryView:String = “XXX” let Clz = NSClassFromString(accessoryView) as! 需要转换成的类型或者控制器.Type let switcher:需要转换成的类型或者控制器 = Clz.init() ok!原创 2016-06-12 10:56:49 · 321 阅读 · 0 评论 -
CocoaPods安装及安装时奇怪问题(上篇)
CocoaPods 是 iOS 最常用最有名的类库管理工具! 必须掌握!CocoaPods 安装使用步骤:1. 利用 gem 安装 CocoaPods!1> gem 服务器在国外,提供了非常丰富的终端应用程序! gem 常用命令如下:{// 查看gem源 $ gem sources –l// gem自身升级 $ sudo gem up原创 2016-06-07 06:55:57 · 349 阅读 · 0 评论 -
《swift踩过的坑》之“swift中使用NSClassFromString”
先看一个问题,当代码执行过 1 的,po targetvc 显然是有值出现的然而执行下一行代码 2 之后 ,程序崩掉了,提示了一个错误:unexpectedly found nil while unwrapping an Optinal value我们自定义的类USIndividualSettingVC明明已经存在,为什么在展开的时候却找不到,发现为空?swift跟原创 2016-06-13 13:43:53 · 6199 阅读 · 0 评论 -
函数响应编程&RxSwift(一)
RxSwift安装: CocoPod导入: pod 'RxSwift' pod 'RxCocoa'一.函数式编程 函数式编程是种编程范式,它需要我们将函数作为参数传递,或者作为返回值返还。我们可以通过组合不同的函数来得到想要的结果。用数学表达式来表示:函数 y = f(x) x参数可以是一个函数 x = f(x) 例如:2 ...原创 2019-07-22 18:15:15 · 432 阅读 · 0 评论 -
RxSwift核心逻辑(二)
一.序列继承链 Observable遵循了ObservableType,通过查看Create.swift文件的源码发现ObservableType通过扩展添加了方法create。extension ObservableType { public static func create(_ subscribe: @escaping (AnyObserver<E>...原创 2019-08-02 17:47:14 · 291 阅读 · 0 评论 -
isKindOfClass 和 isMemberOfClass 区别深究
首先来看一道经典面试题:以下代码的打印结果是什么? BOOL rs1 = [[NSObject class] isKindOfClass:[NSObject class]]; BOOL rs2 = [[NSObject class] isMemberOfClass:[NSObject class]]; BOOL rs3 = [[Person class] isKindOfClass:...原创 2018-12-25 15:27:25 · 2511 阅读 · 0 评论 -
GPUImage
概念:GPUImage是基于GUP图像和视频处理的开源iOS框架,支持多种图片处理滤镜,基于GPU的图像加速,所以支持照相机、摄像机的实时滤镜处理。首先了解GPUImage的几个基本的概念:- input 输入源- ouput 输出源- filter 滤镜处理流程:GPUImageFilter是GPUImage里面重要的一个类,GPUImageFilter和响应链的其他元素实现了...原创 2018-08-02 16:45:15 · 1899 阅读 · 0 评论 -
Runtime实现UIButton扩大点击区(Swift)
问题:按钮点击区域过小,想自己控制按钮的点击区域大小。(采用Runtime运行时)解决:import UIKitimport ObjectiveC.runtimeextension UIButton { ///提供多个运行时的key struct RuntimeKey { static let buttonKey = UnsafeRawPointer...原创 2018-06-05 15:38:13 · 1068 阅读 · 2 评论 -
iOS支付宝、微信支付
微信支付:1.获取的数据有:(红色的一定要知道,因为生成签名会用到)参数注释例如appid应用IDwx3ff3d1fc2ff83937mch_id商户号1448474102APP_KEY954d05bee14a4443da66df49c20fac15WX_APPSecret1b887f214421222e1b6a79e4bc37200f2.官方网站下载sdk文件,将以下文件拖入到自己的项目中3.添...原创 2018-03-12 20:45:09 · 369 阅读 · 0 评论 -
tableViewHeader预留空白处理
今天在设置tableView的时候采用了分组的方式,但是出现了一个问题,就是在tableView和navigation之间出现了间隙,那么如何处理掉这个间隙呢?答案很简单,只需要 在控制器里面添加一下代码就可以了。(变量根据自己的定义来设置)self.tableView.tableHeaderView = [[UIView alloc]initWithFrame:C原创 2016-03-09 10:33:21 · 1783 阅读 · 4 评论 -
Swift-构造函数(一)
------ 知之博客 期待与您交流! -------- 构造函数 构造函数:构造函数是一种特殊的函数,主要用来在创建对象时初始化对象,为对象成员变量设置初始值。 Swift中是支持函数重载的,所有的构造函数命都是init,虽然OC是不支持重载的,但是OC支持构造函数,OC中的构造函数是initWithXXX。 构造函数的作用:分原创 2016-07-13 20:55:49 · 2072 阅读 · 2 评论 -
iOS数据存储精讲
iOS开发中本地存储主要有三种形式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)应用沙盒什么是应用沙盒??要想在本地存储数据,那就要知道一下什么是应用沙盒 ,其实很好理解应用沙盒就是应用的文件夹,与其他文件系统隔离。每一个iOS应用都有自己的应用沙盒,应用必须待在自己的沙盒里,其它应用不能访原创 2016-06-13 17:38:23 · 393 阅读 · 0 评论 -
Git常用操作命令:
Git常用操作命令:1) 远程仓库相关命令检出仓库:$ git clone git://github.com/jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remo原创 2016-04-18 20:06:15 · 240 阅读 · 0 评论 -
tableview 上的文字其实就相当在label的操作
问题一 当我们解析的数据超过了一行 怎么让让它换行?解决方案:设置它的行数 cell.textLabel.numberOfLines = 2;问题二 如何改变字体的大小?解决方案:设置字体大小 cell.textLabel.font = [UIFont systemFontOfSize:12];原创 2016-03-28 20:29:49 · 555 阅读 · 0 评论 -
CoreText NSTextView和Attribued String
目录[-]NSTextView和Attribued StringCore Text一.Core Text知识准备1.字符(Character)和字形(Glyphs)2.坐标系3.NSMutableAttributedString 和 CFMutableAttributedStringRef二.Core Text对象模型三.Core Text实战转载 2016-04-08 20:26:36 · 2409 阅读 · 0 评论 -
iOS单利模式透析
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。1.单例模式的要点: 显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。2.单例模式的优点: 1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的原创 2016-03-11 19:09:56 · 527 阅读 · 0 评论 -
自定义下拉刷新控件-CBStoreHouseRefreshControl
今天给大家介绍一个下拉自定义控件-CBStoreHouseRefreshControl。安装CBStoreHouseRefreshControl依赖于CocoaPods,通过在你的Podfile中添加下面这行命令来安装:1pod "CBStoreHouseRefreshControl"原创 2016-03-11 17:35:42 · 1048 阅读 · 0 评论 -
hidesBottomBarWhenPushed的正确用法
今天说的是在TabBar嵌套Nav时,进行Push的时候隐藏TabBar的问题。之前项目也需要这么做,那时候iOS7还没出,也是各种搜罗,后来的解决方法是当push操作的时候自己隐藏Tabbar,push过去视图拉伸适应屏幕,再pop回来的时候接再显示Tabbar,过程复杂还需要自己写动画,最终效果也不是很理想。前两天公司APP上架,当时没有适配iOS7,在XCode4.6上开发编译并转载 2016-03-10 14:27:50 · 420 阅读 · 0 评论 -
百度地图检索周围小吃添加大头针
效果图:代码:1.导入头文件#import 2.设置代理 BMKPoiSearch *_searcher; 3.初始化检索对象 _searcher =[[BMKPoiSearchalloc]init]; _searcher.delegate =self;原创 2016-03-21 11:26:41 · 803 阅读 · 0 评论 -
修改NavigationController title字体颜色
前几天在设置NavigationController 的时候,公司要求将title的颜色更换一下,黑色过于深沉,特意分享一下如何将title设置为我们自定义的颜色。//宏定义#define ThemeColor(colorname)[ [ ThemeManager shareInstance ] getColorWithName:colorname ];//ThemeManager 自原创 2016-03-09 14:11:15 · 1425 阅读 · 0 评论 -
Git代码回滚
git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id【本地代码库回滚】:git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除git reset --hard HEAD~3:将最近3次的提交回滚 【远程代码库回滚】:这个是重点要说的内容,过程比本地回滚要复杂应用场景:自动部原创 2016-04-01 09:54:32 · 2704 阅读 · 0 评论 -
Xcode 快捷键(持续更新...)
1。折叠代码局部折叠(折叠一个函数) :Command+Option+Left/Right全局折叠(折叠当前文件下的全部函数):Shift+Command+Option+Left/Right折叠注释块:(/* */之间的文字) : Ctrl+Shift+Command+Left/Right原创 2016-03-08 11:29:01 · 271 阅读 · 0 评论 -
UIDevice、NSBundle、NSLocale-获取手机信息
iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备、系统信息、应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发api可以获取到的。那么通过那些api可以获取这些信息呢,iOS的SDK中提供了UIDevice,NSBundle,NSLocale。UIDevice UIDevice提供了多种属性、类函数及原创 2016-03-08 10:23:19 · 239 阅读 · 0 评论 -
UIView画圆、切圆环
对于一些圆,或者圆环我们可以用UIView进行切出来。案例:原图:效果图:主要代码如下://设置圆环 self.pointView.layer.cornerRadius =11; //设置圆形的程度 self.pointView.layer.masksToBounds =YES; //设置是原创 2016-03-17 10:40:22 · 4628 阅读 · 0 评论 -
IOS viewDidLoad方法被执行两次(viewDidLoad和loadView方法详解)
为了搞清楚viewDidLoad、loadView等方法的用途和调用顺序,写了一个小demo,不料viewDidLoad方法被执行了两次,模拟器也一直是黑屏。查看了这两个方法的官方解释后找到了错误原因和解决方法。首先来看UIViewController.h文件中对viewDidLoad方法的解释:?原创 2016-03-23 10:58:46 · 1803 阅读 · 0 评论 -
View Controller生命周期的各个方法的调用
- (void)awakeFromNib;这个方法用的时候,outlet还没有连接起来,是view Controller刚从storyboard建的时候,没有完全建好,不过可能有一些事情要在这个方法里面完成,比如splitViewDelegate,需要在非常早期完成。- (void)viewDidLoad;用这个的时候,ViewController已经完全好了,outlet也已原创 2016-03-23 10:25:53 · 803 阅读 · 0 评论 -
如何让按钮UIButton的文字左对齐?
1.推荐两种方案:UIEdgeInsets titleEdgeInsets; 属性就行了,使用UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)构造一个结构体,设置给btn即可。左对齐UIEdgeInsetsMake(0, -20,0 , 0);(数值自己看着调把)原创 2016-04-05 16:15:40 · 1590 阅读 · 0 评论 -
UILabel添加删除线
效果图:在制作价格时候时候,会用到打折的情况,这种删除线又是如何加上去的呢?原创 2016-04-08 19:52:07 · 1160 阅读 · 0 评论 -
UIScrollView基本用法&代理方法
*今天做项目用到了UIScrollView的一些代理方法,特意做了一下整理,供大家参考!- (void)viewDidLoad{ [super viewDidLoad]; scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320,原创 2016-03-15 13:26:00 · 481 阅读 · 0 评论