iOS开发
ZhaiAlan
iOS开发工程师
展开
-
Xcode15 iOS 17 Simulator 离线安装,模拟器安装
Xcode 15 安装包的大小相比之前更小,因为除了 macOS 的 Components,其他都需要动态下载安装,否则提示 iOS 17 Simulator Not Installed。原创 2023-12-22 09:37:04 · 7096 阅读 · 10 评论 -
M1上模拟器无法运行的项目,可以用Rosetta打开
M1上模拟器无法运行的项目,可以用Rosetta打开原创 2021-12-07 10:02:37 · 6893 阅读 · 0 评论 -
iOS开发 Xcode12 升级 (模拟器运行)报错问题
遇到问题1.升级xcode12报错 'xxx.a' is missing one or more architectures required by this target: x86_64.解决问题在buildsetting ->VALID_ARCHS里的debug添加x86_64,如果有多个target 分别都修改下原因分析Xcode12苹果推出了新的arm架构的mac,会默认支持x86_64所以非arm架构的mac需要手动支持知识补充(cpu架构)真机...原创 2020-11-11 13:56:16 · 1953 阅读 · 0 评论 -
iOS 探索KVO四(自定义KVO进阶)
前言前几篇KVO的文章介绍了一些KVO的使用方式和KVO的实现原理和自定义KVO,但是有几个问题没有解决,例如:如果监听多个属性,上篇文章中的自定义KVO就不能解决了,自动销毁等,本篇文章需要在上篇文章的基础上进行阅读;KVO监听多属性多属性监听KVO,Github地址首先引入思路 引入一个类来保存观察者 在保存观察者的时候,需要使用数组或字典进行保存 在...原创 2020-05-06 16:46:16 · 321 阅读 · 0 评论 -
iOS 探索KVO三(自定义KVO)
前言前两篇KVO的文章介绍了一些KVO的使用方式和KVO的实现原理,这篇文章我们来自定义KVO;自定义KVO自定义KVO首先要有个大概思路,根据KVO原理来进行操作:自定义KVO源码请移步github点击下载1.添加通知即:- (void)xz_addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath ...原创 2020-04-30 18:08:20 · 356 阅读 · 0 评论 -
iOS 探索KVO二(原理探索)
前言上篇文章介绍了一些KVO的使用方式,包括监听多个字段改变的值,和监听可变数组等;这篇文章来探索一下KVO的实现原理;原理探究首先还是看一下官网的介绍:Key-Value Observing Implementation DetailsAutomatic key-value observing is implemented using a technique calledi...原创 2020-04-29 11:00:43 · 202 阅读 · 0 评论 -
iOS 探索KVO一(几种简单的KVO使用方式)
前言KVO全称为Key Value Observing,键值监听机制,由NSKeyValueObserving协议提供支持,NSObject类继承了该协议,所以NSObject的子类都可使用该方法。文章中的DemoKVO监听写法例如在XZPerson类中有这么几个属性@interface XZPerson : NSObject@property (nonatomic, co...原创 2020-04-28 18:02:12 · 424 阅读 · 0 评论 -
iOS源码调试
前言最近有一些小伙伴私信我,说看之前的iOS底层系列文章中,下载的objc4_752源码不能使用,这里需要给大家解释一波修改方法1.在使用objc4_752源码源码时,注意签名改成自己的代码签名2.选择版本需要在target 版本10.143.添加系统库libobjc.A.dylib ,可以进入源码调试4.最近发现使用xcode11可能会导致崩溃但是xcode10 可以...原创 2020-04-24 14:07:51 · 657 阅读 · 0 评论 -
iOS 面试题 sel详解weak本质
1.Runtime是什么?runtime 是由C 和C++ 汇编 实现的⼀套API,为OC语⾔加⼊了⾯向对象,运⾏时的功能2、⽅法的本质,sel是什么?IMP是什么?两者之间的关系⼜是什么?⽅法的本质:发送消息,消息会有以下⼏个流程1:快速查找(objc_msgSend)~cache_t缓存消息2:慢速查找~递归⾃⼰|⽗类~lookUpImpOrForward3:查找不到消息:...原创 2020-04-24 13:45:09 · 813 阅读 · 0 评论 -
iOS底层探索七(类的分析下)
前言相关文章: iOS底层探索一(底层探索方法) iOS底层探索二(OC 中 alloc 方法 初探) iOS底层探索三(内存对齐与calloc分析)iOS底层探索四(isa初探-联合体,位域,内存优化) iOS底层探索五(isa与类的关系)iOS底层探索六(类的分析上) 相关代...原创 2020-03-11 16:50:24 · 360 阅读 · 0 评论 -
lldb调试进阶
前言相关文章 lldb调试命令一相关代码LLDB前面一篇文章,让大家了解了一些LLDB 在断点上的用法,这篇文章主要对lldb的一些进阶用法。LLDB进阶在之前的iOS底层探索中,我经常Xcode调试的时候在LLDB上输入:p xxx或者 输入了po xxx,就获取了一个对象的值。那么p或者po含义到底是什么呢?LLDB输入help...原创 2020-03-24 11:14:50 · 332 阅读 · 0 评论 -
iOS底层探索六(类的分析上)
前言相关文章:iOS底层探索一(底层探索方法) iOS底层探索二(OC 中 alloc 方法 初探) iOS底层探索三(内存对齐与calloc分析) iOS底层探索五(isa与类的关系) 相关代码: objc4_752源码 前几篇文章对alloc方法和...原创 2020-03-10 18:04:36 · 309 阅读 · 0 评论 -
iOS底层探索四(isa初探-联合体,位域,内存优化)
前言相关文章:iOS底层探索一(底层探索方法) iOS底层探索二(OC 中 alloc 方法 初探) iOS底层探索三(内存对齐与calloc分析) 相关代码: objc4_752源码 UnionDomain 前几篇文章对alloc方法进行了初步探究...原创 2020-03-06 17:05:20 · 932 阅读 · 0 评论 -
iOS底层探索二(OC 中 alloc 方法 初探)
前言 开发中我们经常会用到XZPerson *p= [[XZPerson alloc]init],我们只知道,这样我们就新建了一个对象,可以直接使用这个对象,可以对这个对象进行赋值使用,但是我们没有关心过alloc方法底层到底是通过什么方式进行实现的;今天我准备对alloc方法进行一次尝试性底层挖掘;首先我们需要先准备一份可编译的objc4_756代码,可以直接进行下载探索...原创 2020-03-03 15:50:15 · 866 阅读 · 2 评论 -
iOS底层探索一(底层探索方法)
前言 作为iOS开发,看底层源码基本是必须的,但是很多人都想看源码,但是入门无路,所以在进行底层探索之前,先介绍一篇文章来描述一下我一般是怎么要找底层源码的。探索底层源码出处: 下断点 : control + in 符号断点设置:例如alloc 源码 代码跟踪 汇编探索1.断点调试设置 例如我们使用alloc代码进行下断点 : control + i...原创 2020-02-28 16:51:06 · 591 阅读 · 0 评论 -
终端命令lipo进行拆包合包
作为iOS开发,我们经常会遇到业务告诉我们安装包过大了,我们需要怎么样让APP瘦身, 这里很多人就会想到,我们工程里面有很多的自己封装的静态库(.a文件)下手了,直接给静态库只放一个真机(.a文件<armv7+arm64>),这样会导致我们在开发过程中没有模拟器文件,导致不能用模拟器进行测试。这里需要注意的是iOS系统在10系统以下可以使用armv7 在11之后都是...原创 2019-10-22 10:18:01 · 868 阅读 · 0 评论 -
MBProgressHUD.h使用详解
在这里我会有2种对MBProgressHUD.h的封装,一般情况会放到工程的BaseViewController中去,1种是弹框覆盖全屏,2是弹框后导航栏上按钮可点击首先文件.h中声明方法@interface BaseViewController : UIViewController/*** 显示提示弹框,文字为1行尽量简短,及显示时间,一般用于提示语,*...原创 2016-08-27 12:02:32 · 2477 阅读 · 0 评论 -
MySQL进阶之路十二(实体关系,sql优化,备份与还原)
实体关系(E-R 图)对客观世界抽象的模型展示(实体, 关系 ,属性,连线)矩形框:标示实体 菱形框:标示连线,在框中计入联系名 椭圆形框:实体或联系的属性,将属性名计入框中,对于主属性在名称下面划线 连线: 实体与属性,实体与联系,联系与属性用于描述关系等下面简单绘制一个员工和部门之间的E—R图实体之间的关系一对一:个人信息和档案 1.外键添加唯一约束...原创 2019-06-21 10:54:18 · 190 阅读 · 0 评论 -
MySQL进阶之路二(主键约束)
# 主键字段要求1.唯一的,不能为空,不要选择业务字段2.一张表中只能有一个主键,但是可以有联合主键(多个字段整体作为主键)#创建表设主键create table student(sid int primary key,sname varchar(20));#创建主键约束create table student(sid int,sname varchar(20),pri...原创 2019-06-17 17:14:10 · 334 阅读 · 0 评论 -
MySQL进阶之路三(其他类型约束)
#域完整性类型约束非空约束 不能为空 not null默认值 default '0'#非空和默认值create table student( sid int primary key auto_increment, sname varchar(20) not null, gender bit(1) default 1);desc class #引用完整性一张表中...原创 2019-06-18 11:15:07 · 146 阅读 · 0 评论 -
MySQL进阶之路四(添加/修改/删除数据)
create table classroom1(cid int primary key auto_increment,cname varchar (20),`desc` varchar(20))desc classroomalter table classroom modify cid int auto_incrementinsert into classroom values(...原创 2019-06-18 11:16:52 · 142 阅读 · 0 评论 -
MySQL进阶之路五(运算符)
#运算符1,算数运算符(+ - * /)select 1+1;select 1-1;select 1*2;select 1/3; 0.3333---double 类型select 3 div 2; 整除select 3/0; null 2.比较运算符(= != >= <=)select 1 != 1; 0# is null /is not nul...原创 2019-06-18 15:57:09 · 174 阅读 · 0 评论 -
MySQL进阶之路六(查询数据)
#查询数据 SELECTselect 字段或表达式 from 表名,视图,结果集where 条件 (单一条件或组合条件)GROUP BY 分组having 分组之后进行检索order by 排序limit 限制结果select * from classroom;#查询所有员工姓名和工资select ename, sal from emp;#查询工资> 200...原创 2019-06-18 16:20:41 · 288 阅读 · 0 评论 -
MySQL进阶之路十一(视图,索引)
.视图 i 什么是视图,数据库兑现,他是一个虚拟表,底层并非以键值形式保存数据,在执行的过程中, 动态的从基表中获取数据。(视图以表为底层来查询) ii 视图基本语法 #查询班级id为1 的所有学生信息 create view view_student as select *from student where cid = 1 with check opti...原创 2019-06-21 10:43:27 · 159 阅读 · 0 评论 -
MySQL进阶之路十(存储过程,存储函数)
存储程序 a)运行于服务器程序 b)优点 i 简化开发 ii 执行效率高 c)缺点 i 程序保存在服务器端,占用服务器(数据库)资源 ii 数据迁移(所有的存储程序都需要迁移) iii 调试,编写程序不方便 d)分类 i 存储过程:有输入输出参数,可以执行一组sql命令。 ii 存储函数:有一个返回值,可以对sql进行有效的扩展 iii 触发器:置顶时...原创 2019-06-21 10:40:28 · 246 阅读 · 0 评论 -
iOS UIAlertView显示不出标题,及重写系统方法
最近做项目的时候,遇到一个问题,就是UIAlterView 设置了标题,但是标题一直显示不出来,但是单独出来自己写个demo,进行测试,又没问题,找了挺久的终于找到原因: UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"标题" message:@"这个是UIAlertView的默认样式" delegate:ni...原创 2017-01-22 11:28:50 · 1050 阅读 · 0 评论 -
iOS release版本
首选需要说明的是,iOS一般情况分为release,debug版本,在iOS开发中也有很多宏是可以区分的,一般情况下,在公司开发的时候,都会有开发环境,和生产环境,一般情况在开发的时候都会是debug环境,除非自己刻意修改,但是打包上传到AppStore上后生成ipa包一般情况都是release环境,所以在开发中就可以用iOS提供的宏很好的区分开,例如开发环境和生产环境,又例如有很多东西需要在开发...原创 2017-01-13 09:03:24 · 1169 阅读 · 0 评论 -
ios 学习之 NSPredicate 模糊、精确、查询 ,包括模糊搜索,多条件搜索,及属性中多个字段检索
1.先创建一个person对象 @interface Person: NSObject{ NSString *firstNames; NSString *lastNames; int age; } NSArray *firstNames = @[ @"Alice", @"Bob", @"Charlie",@"Zhai", @"Quentin" ];原创 2016-11-08 08:56:14 · 1526 阅读 · 0 评论 -
IOS加密
IOS加密先在挺多的都是MD5(32位)加密,base64加密,AES(256)加密1,md5加密,这个实现起来比较方便直接写个方法就可以了但是要注意的是需要引入内部的一个头文件#import CommonCrypto/CommonDigest.h传入需要加密的字符串,生成加密后的字符串- (NSString *)md5:(NSString *)str{ const cha...原创 2016-11-04 09:02:58 · 303 阅读 · 0 评论 -
好久没写了,今天写个iOS用ASIFormDataRequest实现图片上传
方法一:表单提交NSString *fileName = [[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"];//获取图片在本地的地址 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL: [NSURL URLWithStri...原创 2016-11-04 08:54:44 · 350 阅读 · 0 评论 -
线程通信,线程安全及解决方式
原创 2016-08-03 17:04:48 · 322 阅读 · 0 评论 -
客户端与服务器交互---http协议
[客户端服务器关系](http://img.blog.csdn.net/20160803162106434 服务器类别 URL介绍 URL常见协议 Http协议详细介绍 http协议特点 http请求方式 get请求和post请求区别 get和post选择 http通信过程 http通信请求详解 http通信响应详解 客户端服务器交互图解 iOS请求基本方案 http请求原创 2016-08-03 17:00:18 · 1541 阅读 · 0 评论 -
修改UITextfield的Placeholder字体的颜色
暂时我知道的有2种方式 第一种UITextField * _inviteCodeTextFiled = [[UITextField alloc]init]; _inviteCodeTextFiled.placeholder = @”请输入邀请码”; [_inviteCodeTextFiled setValue:k999999color forKeyPath:@”_placeholderLab原创 2016-07-25 16:52:34 · 270 阅读 · 0 评论 -
ios WebView 打开txt文件乱码问题
UIWebView *web = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0,WIDTH , HEIGHT)]; web.backgroundColor = [UIColor clearColor]; web.scalesPageToFit = YES; web.scrollView.delega...原创 2017-07-24 11:17:09 · 2593 阅读 · 2 评论 -
GCD 的使用
可以查看Demo// ViewController.m// UsedGCD//// Created by jinxin on 16/8/1.// Copyright © 2016年 zhaixingzhi. All rights reserved.//#import "ViewController.h"@interface ViewControl...原创 2017-11-08 10:42:10 · 255 阅读 · 0 评论 -
GCD 包含概念理解
原创 2017-11-08 10:53:55 · 395 阅读 · 0 评论 -
原 MySQL进阶之路九(事务)
事务a)存储引擎:(https://blog.csdn.net/qq_29168493/article/details/79066399) 数据库底层软件组织dbms,通过存储引擎实现对数据的操作,MySQL核心就是存储引擎 MySQL中可以设置多种存储引擎,不同存储引擎在索引,存储一级索引策略上是不同的 MySQL5.5之前myisam存储引擎,支持全文搜索,不支持事务 MySQL5...原创 2019-06-21 10:37:29 · 160 阅读 · 0 评论 -
MySQL进阶之路八(高级查询)
1.高级查询(多表查询)#查询员工编号(empno,emp表)为9527的员工姓名(ename,emp表)和所在部门名称(dname,dept)select ename from emp where empno = 7788;#查姓名select dname from dept where empno ==7788;#查部门#一.内连接(没有主从表之分)select ename ,d...原创 2019-06-19 11:05:26 · 429 阅读 · 0 评论 -
MySQL进阶之路七(函数)
函数#将奖金<500的员工奖金提升100,没有奖金的人comm为nullupdate emp1 set comm = comm +100 where comm <500;update emp1 set comm = 100 where comm is null;#使用ifnull函数,将comm 为null 的置为0update emp1 set comm = i...原创 2019-06-19 09:03:50 · 240 阅读 · 0 评论 -
如何访问并修改一个类的私有属性?
三种方式供你选择通过KVC来设置 通过runtime动态改变 通过 msg_send() 设置例子:有这样一个类 PrivateVariablesClass:@interface PrivateVariablesClass ()@property (nonatomic, assign) NSInteger priviteNum;@property (nonatomic, s...原创 2019-03-04 15:42:18 · 1567 阅读 · 0 评论