
iOS
fire_gaper
这个作者很懒,什么都没留下…
展开
-
线程间的通讯
线程间的通讯原创 2022-08-15 04:20:25 · 315 阅读 · 1 评论 -
weak的自动置空
创建和销毁差不多相同,从sideTble中的weak_table散列表找到对应的weak_entry_t数组,然后通过遍历找到对应的指针地址,置为nil,防止了野指针的报错,或者插入到weak_entry_t数组。当一个对象obj被weak指针指向时,这个weak指针会以obj作为key,被存储到sideTable类的weak_table这个散列表上对应的一个weak指针数组里面。当一个对象obj的dealloc方法被调用时,Runtime会以obj为key,从sideTable的weak_table。..原创 2022-07-28 16:37:29 · 601 阅读 · 0 评论 -
WKWebView离线缓存
WKWebView离线缓存原创 2022-07-15 04:09:59 · 642 阅读 · 0 评论 -
元类和本类
本类和元类原创 2022-07-12 20:46:53 · 325 阅读 · 0 评论 -
_和self.赋值的区别
1.用_属性赋值,是直接赋值地址,把指针指向内存,strong/copy/retain等修饰词并不起作用2.用self.赋值,是使用setter方法,通过imp重定向到setPropety方法找到对应的内存,根据属性的修饰词进行操作赋值。用_或者self.进行属性赋值,对使用copy修饰的属性有影响之外,别的区别不大,因为strong/retain等只是引用计数的增加,而copy修饰的时候,如果是进行的深拷贝(比如copy对象为multable数据),_并不会重新开辟内存,而self.会开辟一份新内存(深原创 2022-07-12 20:26:14 · 230 阅读 · 0 评论 -
属性用copy修饰时的深拷贝和浅拷贝的关系
用copy修饰属性原创 2022-07-05 18:38:40 · 126 阅读 · 0 评论 -
tableView 默认选中某一行
NSIndexPath *indexpath=[NSIndexPath indexPathForRow:1 inSection:0];[tableView selectRowAtIndexPath:indexpath animated:YES scrollPosition:UITableViewScrollPositionBottom];[self tableView:tableView didSelectRowAtIndexPath:indexpath];原创 2020-07-08 14:08:43 · 540 阅读 · 0 评论 -
unsigned,const,static,extern
一. unsigned和signed 1.存储范围不同,以16位计算机为例:signed的存储范围是(-2^15 -- 2^15-1)即 -32768到 + 32767 的整数 unsigned的存储范围是(0-- 2^16-1)即 0到 + 65535 的非负整数 在声明int的时候,在可以保证是正整...原创 2020-05-27 15:18:33 · 750 阅读 · 0 评论 -
获取某个 protocol 协议下的所有方法
- (NSArray<NSString *> *)appDelegateMethods{ static NSMutableArray *methods = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ unsigned int metho...原创 2020-04-08 18:57:41 · 762 阅读 · 0 评论 -
button的图片和文字的位置关系
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(200, 200, 150, 60)]; btn.layer.borderWidth = 1; btn.layer.borderColor = [UIColor darkGrayColor].CGColor; [self.view addSubview:b...原创 2019-12-14 01:58:22 · 317 阅读 · 0 评论 -
Xcode8制作.a静态库和存放xib和图片的.bundle
1、创建MyLibrary静态库如图:选择Cocoa Touch Static Library 点击下一步,然后起工程的名字就叫:MyLibrary选择库类型创建完毕的的样子就是下图:项目创建完成图为了使库的头文件被外面的项目工程找到并调用,需要我们将需要暴露的文件写在特定的目录里。添加方法如下图创建Header Phase创建完翻译 2017-02-23 16:51:40 · 528 阅读 · 0 评论 -
Xcode8制作.a静态库和存放xib和图片的.bundle
接上篇文章,继续创建.bundle文件1、首先在MyLbrary中添加bundle,名称为:LibraryResources2、因为bundle默认是OS系统的,所有需要修改他的信息。如图,修改成iOS系统3、设置Build Setting中的COMBINE_HIDPI_IMAGES 为NO,否则bundle中的图片就是tiff格式了4、创建一个测试类:MyVi翻译 2017-02-23 17:16:21 · 1301 阅读 · 0 评论 -
autoresizing布局
UIView *view = [[UIViewalloc]initWithFrame:CGRectMake(20, 20, 200, 50)]; view.backgroundColor = [UIColororangeColor]; view.autoresizingMask =UIViewAutoresizingFlexibleWidth |UIVi原创 2017-04-12 13:01:37 · 345 阅读 · 0 评论 -
AFNetworking3.1 基本使用
AFNetworking3.1 基本使用#import "HttpsManager.h"@implementation HttpsManager#pragma mark - 创建请求者+(AFHTTPSessionManager *)manager{ AFHTTPSessionManager *manager = [AFHTTPSessionManager m转载 2017-05-24 12:05:09 · 356 阅读 · 0 评论 -
iOS 10.3之后的富文本样式对中文实效
NSAttributedString *attrStr = [[NSAttributedStringalloc]initWithString:strattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:size], NSForegroundColorAttributeName:color,原创 2017-06-28 13:10:04 · 567 阅读 · 0 评论 -
浅谈信号量的简单应用
理解这个概念之前,先抛出一个问题问题描述:假设现在系统有两个空闲资源可以被利用,但同一时间却有三个线程要进行访问,这种情况下,该如何处理呢?或者我们要下载很多图片,并发异步进行,每个下载都会开辟一个新线程,可是我们又担心太多线程肯定cpu吃不消,那么我们这里也可以用信号量控制一下最大开辟线程数。 定义: 1、信号量:就是一种可用来控制访问资源的数量的标识,设定了一个信号量,在线程访问之前,加上信号...转载 2018-04-24 12:22:14 · 1202 阅读 · 0 评论 -
常用GCD梳理(二)
// 四种队列 //———————————————————————————————————————————————————————————————————————————————— // //1、主队列(是串行队列) dispatch_queue_t mainQueue = dispatch_get_main_queue(); // /...原创 2018-04-24 15:22:02 · 388 阅读 · 0 评论 -
XCode代码自动对齐,神操作
command+a command+x command+v 搞定转载 2015-04-24 13:21:46 · 882 阅读 · 0 评论 -
去掉某个controller及子controller的navigationController底部的分割线
在当前控制器下:[self.navigationController.navigationBar setShadowImage:[UIImage new]]; [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"whiteBG.pg"] forBarMetrics:UIBa...原创 2018-11-22 16:51:57 · 256 阅读 · 0 评论 -
浅谈事件的分发与响应
在 iOS 开发中,当用户用手指点击了一下屏幕,会发生什么呢?系统是怎么判断用户点击的位置呢?我们开发者又如何做出“没有bug”的交互呢?带着这些疑问,我们一起谈谈事件的分发与响应。铺垫事件顾名思义,事件就是发生的一件事,对于APP来说,就是发生的一个操作。具体的就是用户点击一下屏幕就会出现一个事件(体现为一个UIEvent),即一个触摸事件。其实,对于 iOS 设备的用户来说,他...转载 2019-07-25 14:45:57 · 282 阅读 · 0 评论 -
ios下的各个文件夹路径和获取方法
温故知新,理一遍文件夹路径每个APP沙盒下有四个文件夹:documents,tmp,app,Library(里面还有两个文件夹Caches 和 Preferences)。一:作用1.documents:这是文档目录。有关应用的所有数据文件应该写入到这个目录下,这个目录用于存储用户数据或者其他应该定期备份的信息。iTunes会同步此文件内容,适合存储一些重要的数据.2.tmp:临时目...原创 2019-07-31 09:55:02 · 3776 阅读 · 0 评论 -
unsigned和signed
整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而uns原创 2016-01-26 10:50:41 · 639 阅读 · 0 评论 -
随机字符串
char data[16]; for (int i=0;xchar)('a' + (arc4random_uniform(26))));// for (int i=0;x return [[NSStringalloc] initWithBytes:datalength:16 encoding:NSUTF8StringEn原创 2017-02-05 14:23:10 · 315 阅读 · 0 评论 -
gitHub关联本地
git --version 查看电脑git 版本。没有的话,安装git因为本地git仓库和gitHub服务器是通过ssh加密,所以要在github.com上配置ssh-key------->ssh -v 或 ssh --version 查看ssh没有安装ssh的话,创建apple$ cd ~apple$ cd .ssh:No such fi原创 2016-10-19 17:48:54 · 417 阅读 · 0 评论 -
iOS 多线程总结
在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。还有一点需要说明的是,这篇文章将会使用Swift 和 Objective-c 两种语言讲解概述这篇文章中,我不会说多线程是什么、线程和进程的区别、多线程有什么用,当然我也不会说什么是串行、什么是并行等问题,这些我们应该都知道的。在 iOS转载 2016-06-17 10:28:05 · 532 阅读 · 1 评论 -
error:Cannot assign to 'self' outside of a method in the init family
关于error:Cannot assign to 'self' outside of a method in the init family 有时候我们重写父类的init方法时不注意将init后面的第一个字母写成了小写,在这个方法里面又调用父类的初始化方法(self = [super init];)时会报错,错误信息如下:error:Cannot assign to 'self'翻译 2016-05-23 16:27:37 · 446 阅读 · 0 评论 -
iOS之NSKeyedArchiver的序列化存储
NSString *rootPath = NSHomeDirectory(); NSString *path = [rootPath stringByAppendingPathComponent:@"test.txt"]; NSLog(@"%@",path); NSMutableData *data = [NSMutableData原创 2016-06-03 09:26:33 · 576 阅读 · 0 评论 -
block内部的引用
当在block里面引用 self 的方法等等的时候,通常会报一个这样的错误:capturing 'self' strongly in this block is likely to lead to a retain cycle因为在block的时候,会被retain一次,所以,解决的办法就是把引用对象变成弱引用,具体如下:__block viewController *ctl =原创 2016-05-18 14:49:44 · 626 阅读 · 0 评论 -
UIAlertViewController
iOS 8的新特性之一就是让接口更有适应性、更灵活,因此许多视图控制器的实现方式发生了巨大的变化。全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备尺寸变化效果(比如说旋转)中发挥了重要的作用,它有效地节省了程序员们的工作量(天地良心啊)。还有,某些旧的UIKit控件也同样发生了许多变化,比如说Alert Views、Action Sheets、Po转载 2016-05-10 12:24:19 · 974 阅读 · 0 评论 -
webView小技巧
在上下滑动webView时,为了不让滑动的时候露出底色,可以在webViewDidFinishLoad 里面加一行: [(UIScrollView *)[[_websubviews] objectAtIndex:0]setBounces:NO];就ok了。原创 2015-12-23 00:33:44 · 443 阅读 · 0 评论 -
改变状态栏颜色
第一步: 配置Info.plist: View controller-based status bar appearance 为NO,第二步:app delegate.m 里添加: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//状态栏字体颜原创 2015-12-21 15:09:30 · 399 阅读 · 0 评论 -
ssh之公钥(isa_pub)
$ cd ~/.ssh 检查本级有没有公钥 $ ls 查看包含文件 列表(可能会出现: id_rsa (私钥)、 id_rsa.pub(公钥)。。。) ,如果没有,需要创建: $ ssh-keygen之后用vim打开 id_rsa_pub: $ vim id_rsa_pub此时,你看到的就是所谓的公钥了,ok!!!现在是v原创 2015-12-31 11:16:44 · 3063 阅读 · 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翻译 2015-12-30 14:36:59 · 571 阅读 · 0 评论 -
ios 自定义cell cellForRowAtIndexPath中的写法
建cell文件,继承UITableViewCell如果你没使用xib或者storyboard的话可以在直接new一个cell,跟普通写法一样static NSString *cellid = @"cellIdentifier"; TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid转载 2016-06-21 15:05:16 · 1133 阅读 · 0 评论 -
dispatch_once浅谈
让我们先看看dispatch_once的实现(Grand Central Dispatch是开源的,大家可以到git://git.macosforge.org/libdispatch.git克隆源码)1234567891011121314151转载 2016-07-18 15:51:05 · 671 阅读 · 0 评论 -
UIView的xib关联问题
使用xib新建了一个UIView,运行时的一个小错误:reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "BFMessageInfoView" nib but the view outlet was not set.'原因:xib文件到UIViewController程序没原创 2016-06-23 12:33:40 · 1141 阅读 · 1 评论 -
常用GCD梳理(-)
一:异步、同步1.dispatch_async(dispatch_queue_t queue, dispatch_block_t block);异步执行例如: 会立即返回,同时把block里面加载的东西放在后台执行。 执行完毕之后 在main(主线程)里面刷新UI页面。 _imgv = [[UIImageView alloc]initWithFrame:self.view.frame原创 2016-10-12 17:53:36 · 500 阅读 · 0 评论 -
dispatch_soruce_t的简单使用事例
__block int time = 3; //倒计时时间 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // dispatch_source_t timer = dispatch_source_create(DISPATCH_SOUR原创 2016-10-18 17:33:33 · 398 阅读 · 0 评论 -
dispatch_source_t
Timer Dispatch Source:定时调度源。Signal Dispatch Source:监听UNIX信号调度源,比如监听代表挂起指令的SIGSTOP信号。Descriptor Dispatch Source:监听文件相关操作和Socket相关操作的调度源。Process Dispatch Source:监听进程相关状态的调度源。Mach port Dispatch Source:监听转载 2016-10-18 17:18:20 · 654 阅读 · 0 评论 -
llvm错误
无缘无故出来这个错误,怎么调试都不管用Unsupported compiler 'com.apple.compilers.llvm.clang.1_0' selected for architecture 'x86_64' 最后无意间关掉了Xcode和模拟器,然后再打开,又莫名其妙的好了,不知道是不是xcode的一个潜在bug,先记下来再说原创 2016-10-03 20:28:40 · 1442 阅读 · 0 评论