日常开发问题
天佑木枫
好记性不如烂笔头
展开
-
cocoapods升级中遇到的问题
不定时更...目录一、brew1、Mac Homebrew命令报错/usr/local/Homebrew/Library/Homebrew/version.rb:368:in `initialize’二、HTTP1、HTTP/2 stream 1 was not closed cleanly before end of the underlying stream一、brew1、Mac Homebrew命令报错/usr/local/Homebrew/Library/Homebr原创 2022-05-10 12:01:36 · 783 阅读 · 0 评论 -
数组和链表的区别
一、数组数组是最基本的数据结构,所开辟的内存空间是连续的,且内存大小一经确定之后便无法再更改;优点:查找速度快,因为开辟的内存空间是连续的,为什么说是查找速度快?1、因为可以直接通过数组的索引得到对应的数据,2、因为存储数据的内存连续,就算不知道所需要的数据对应的索引,即便从头到尾顺序查找一遍也能快速得到想要的数据。缺点:1、浪费内存,缺乏弹性(不能根据当前实际需求更改大小)。2、增添和删除的效率低。因为数组的大小在一开始就确定,无法更改,在后续想要添加或者删除数据,不能直接原创 2022-03-11 10:55:08 · 4897 阅读 · 0 评论 -
iOS日常开发之KVC
KVC也就是key-value-coding,即键值编码,通常是用来给某一个对象的属性进行赋值[obj setValue:@"张三" forKey:@"name"];原理:1、寻找对应key的setter方法当调用setValue:forKey:时 ,程序会先通过setter(set:)方法,对属性进行设置;如果没有找到setKey:方法,KVC机制会检查+(BOOL)accessInstanceVariablesDirectly方法重写返回了NO,那么这一步会执行setValuef原创 2022-03-11 10:44:55 · 2583 阅读 · 0 评论 -
iOS开发之iOS14详解
目录1、project文件命名2、 广告标识符IDFA2.1、iOS13之前2.2、iOS143、相册3.1、iOS13之前3.2、iOS14在 iOS14之前,当用户首次访问APP时,会被要求开放很多权限,如相册、定位、通讯录等,实际上该APP可能只需一个选择图片功能,但却被要求开放整个照片库的权限,这是很不合理的。对于相册,在 iOS14 中引入了 “LimitedPhotos Library” 的概念,用户可以授予应用访问其一部分的照片,对于应用来说,仅能读取到用户选择让应用来读取的照片,让我们看原创 2021-08-19 16:09:54 · 541 阅读 · 0 评论 -
日常-关于NS_OPTIONS枚举的用法
NS_OPTIONS的作用是对于一个状态可以有多个取值而设计的,比如如果给按钮设置圆角,那么有上下左右4个方向,而你可以只设置左边有圆角,也可以设置左边和右边有圆角,这样就有很多种排列组合。首先定义一个NS_OPTIONS//NS_OPTIONS,定义选项typedef NS_OPTIONS(NSUInteger, ExampleOption) { ExampleOptionNone = 0, //二进制0000,十进制0 ExampleOptionLeft = 1原创 2021-08-19 16:09:11 · 436 阅读 · 0 评论 -
算法-int各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。思路:取出数据的每一位,进行相加,直至满足条件。int addDigits(int num){ int sum = 0; while(num > 9){ sum += num%10; num /= 10; } sum +原创 2020-11-19 10:50:16 · 2014 阅读 · 0 评论 -
算法-移动数组中零的位置
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]方法:从第一个数据开始对比,如果为0,就和后面的数据进行一一对换void moveZeroes(int* nums, int numsSize){ for(int i = 0;i < numsSize - 1;i++) { for (int j = i;j < numsSize - 1;j++原创 2020-11-19 10:27:43 · 334 阅读 · 0 评论 -
算法-颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:11111111111111111原创 2020-11-18 16:19:38 · 271 阅读 · 1 评论 -
算法-2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 2^0 = 1示例 2:输入: 16输出: true解释: 2^4 = 16示例 3:输入: 218输出: false思路2的幂,指转化为二进制时,有且只有一位为1也就是说,当数值转化为二进制表达式的时候,其中数字位数为 ‘1’ 的个数,为1个时为真bool isPowerOfTwo(int n){ //当为0、负数、溢出,为false if (n < 1原创 2020-11-18 16:12:04 · 554 阅读 · 0 评论 -
算法-无符号整数中位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为原创 2020-11-18 16:00:42 · 579 阅读 · 0 评论 -
算法-求数组的子数组之和的最大值
一个一维int数组,这个数组有很多子数组,那么子数组之和的最大值是什么呢?思考 1、题目说的子数组是连续的; 2、题目只需要求和,并不需要返回子数组的具体位置; 3、数组的元素是整数,所以数组可能包含有正整数、零、负整数;举几个例子: 数组:[1, -2, 3, 5, -3, 2]应返回:8 数组:[0, -2, 3, 5, -1, 2]应返回:9 数组:[-9, -2, -3, -5, -3]应返回:-2,这也是最大子数组的和。【解法一】: 直接的方法,记Sum[i,…,原创 2020-11-18 15:33:10 · 1909 阅读 · 0 评论 -
算法-常见的数组排序算法
目录1、冒泡排序2、选择排序3、直接插入排序4、二分插入排序5、希尔(插入)排序6、快速排序7、堆排序1、冒泡排序冒泡排序原理很容易理解,就是重复地走访过要排序的元素列,依次比较两个相邻的元素,顺序不对就交换,直至没有相邻元素需要交换,也就是排序完成。• 冒泡排序是一种稳定排序算法。• 时间复杂度:最好情况(初始情况就是正序)下是o(n),平均情况是o(n²)void buddleSort(int num[],int count){ for (int i = 0; i < coun原创 2020-11-18 15:16:24 · 482 阅读 · 0 评论 -
算法-统计质数数量
统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0什么是质数?除1和本身外都不能整除思路:n=0、1、2时:无质数;n溢出不考虑;从2-n,先去掉2的倍数;然后3的倍数…直到n。int countPrimes(int n){ //判断传入数值,排除负数、0、1、考虑溢出 if(n < 2 || n > INT_MAX原创 2020-11-18 15:00:26 · 649 阅读 · 0 评论 -
iOS日常开发之property修饰符以及各个修饰符区别
一.@propertyOC的属性(property)是通过用@property定义的公有或者私有的方法。属性(property)提供了一种安全、便捷的方式来与这些属性(attribute)交互,而不需要手动编写一系列的访问方法,如果需要的话可以自定义getter和setter方法来覆盖编译器自动生成的相关方法。尽量多的使用属性(property)而不是实例变量(attribute)因为属性(property)相比实例变量有很多的好处:(1)自动合成getter和setter方法。当声明一个属性(原创 2020-09-02 17:24:18 · 412 阅读 · 0 评论 -
iOS日常开发之常用代码
目录1、禁止手机睡眠2、隐藏某行cell3、禁用button高亮4、tableview遇到这种报错failed to obtain a cell from its dataSource5、cocoa pods报这个错误:unable to access 'https://github.com/facebook/pop.git/': Operation timed out after 0 milliseconds with 0 out of 0 bytes received6、动画切换window的根控制器7原创 2020-08-07 10:52:53 · 669 阅读 · 0 评论 -
iOS日常开发之KVO
1. KVO的使用KVO(Key-Value Observing),也就是我们常说的键值监听,可以用于监听某个对象属性值的改变。KVO使用比较简单,如下所示定义了一个含有2个属性的Student类,然后声明一个实例对象,并添加一个观察者监听某个属性,当被监听的属性发生变化时就会调用观察者的observeValueForKeyPath: ofObject: change: context:方法。当不需要监听的时候需要移除观察者。// Student.h文件@interface Student :原创 2020-07-24 16:18:52 · 306 阅读 · 0 评论 -
iOS日常开发之设计模式
1、MVCMVC是最普遍认知的设计模式,MVC模式将页面的逻辑分为3块:Model(模型数据业务)、View(UI展示业务)、Controller(协调者-控制器)这样的划分很好理解,维护时,只要找到对应的那一块进行修改就好了。在iOS开发中,UIKIt框架是将控制器Controller与View进行绑定了的,每个控制器都有View对象,代码添加UI子控件细节或者在xib与storyboard中子视图可以直接与controller进行关联,都会导致控制器中难以避免很多本该View去负责的UI..原创 2020-07-23 17:06:22 · 115 阅读 · 0 评论 -
iOS日常开发之load和initialize的区别
两者都会自动调用父类的,不需要super操作,且仅会调用一次(不包括外部显示调用). load和initialize方法都会在实例化对象之前调用,以main函数为分水岭,前者在main函数之前调用,后者在之后调用。这两个方法会被自动调用,不能手动调用它们。 load和initialize方法都不用显示的调用父类的方法而是自动调用,即使子类没有initialize方法也会调用父类的方法,而load方法则不会调用父类。 load方法通常用来进行Method Swizzle,initia原创 2020-07-23 17:01:53 · 338 阅读 · 0 评论 -
iOS日常开发之objc在向一个对象发送消息时,发生了什么?
objc在向一个对象发送消息时,发生了什么?根据对象的isa指针找到类对象id,在查询类对象里面的methodLists方法函数列表,如果没有在好到,在沿着superClass,寻找父类,再在父类methodLists方法列表里面查询,最终找到SEL,根据id和SEL确认IMP(指针函数),在发送消息;...原创 2020-07-23 16:58:25 · 246 阅读 · 0 评论 -
iOS日常开发之frame和bounds的不同
之前面试,面试官提了一个问题,frame和bounds有什么不同,如果父view的bounds的y=-100,会有什么变化?子view的bounds的y=-100,又有什么变化?frame的size一定等于bounds的size吗?今天我们来详细了解一下1、frame和bounds是一样的吗?当然不是frame 指的是这个view在它superview的坐标系的坐标和大小bounds指这个view在它自己坐标系的坐标和大小,每个新建的view的bounds默认的( x , y ) 都是 (...原创 2020-07-23 16:55:13 · 624 阅读 · 0 评论 -
iOS日常开发之断言(NSAssert)
断言是指在开发期间使用的、让程序在运行时进行自检的代码(通常是一个子程序或宏)。NSAssert和NSParameterAssert在开发环境中经常被使用,调试和验证代码参数的完整性,断言为真,则表明程序运行正常,断言为假,则意味着它已经在代码中发现了意料之外的错误。一般XCode中的断言在Debug模式默认是开启的,Realse版本中是禁用的。检查是否是debug模式开启断言,release模式关闭,Build Settings中的设置如下:断言的使用NSAssert的简单使用:NS原创 2020-07-15 11:12:19 · 1420 阅读 · 0 评论 -
iOS日常开发之谓词(NSPredicate)的基本用法(三)
常用谓词说明1、大小判断>=,=>:判断左边表达式的值是否大于或等于右边表达式的值<=,=<:判断右边表达式的值是否小于或等于右边表达式的值>:判断左边表达式的值是否大于右边表达式的值<:判断左边表达式的值是否小于右边表达式的值!=、<>:判断两个表达式是否不相等BETWEEN:BETWEEN表达式必须满足表达式 BETWEEN {下限,上限}的格式,要求该表达式必须大于或等于下限,并小于或等于上限NSNumber *test转载 2020-07-14 12:52:51 · 474 阅读 · 0 评论 -
iOS日常开发之常用单词、名词注释
Aapplication [ˌæplɪ'keɪʃ(ə)n]应用程式 应用、应用程序application framework['freɪmwɜːk] 应用程式框架、应用框架 应用程序框架architecture['ɑːkɪtektʃə] 架构、系统架构 体系结构argument ['ɑːgjʊm(ə)nt]引数(传给函式的值)parameter 叁数、实质叁数、实叁、自变量array [ə'reɪ] 阵列 数组arrow ['ærəʊ] 箭头operator ['ɔpəreitə] ar转载 2020-07-14 12:44:02 · 1254 阅读 · 0 评论 -
iOS日常开发之谓词(NSPredicate)的基本用法(二)
在iOS开发中,系统提供了NSPredicate这个类给我们进行一些匹配、筛选操作,非常方便。为了演示,先定义一个person类.h文件#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, copy) NSString *name;@property (nonatomic, assign) NSInteger age; - (instancetype)i转载 2020-07-14 12:38:29 · 445 阅读 · 0 评论 -
iOS日常开发之谓词(NSPredicate)的基本用法(一)
Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取在iOS开发中,系统提供了NSPredicate这个类给我们进行一些匹配、筛选操作,非常方便。最常用到的函数+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...;1、比较运算符 > 、< 、== 、 >= 、<= 、 !=例:@"number >= 99"2原创 2020-07-14 12:29:24 · 839 阅读 · 0 评论 -
iOS 常用数学函数
iOS开发中,常用的c函数,在math.h中绝对值函数1. 取绝对值函数:y = |x| fabs()extern float fabsf(float);extern double fabs(double);extern long double fabsl(long double);取整函数1. 对x进行向上取整 -- ceil()extern float cei...转载 2019-11-01 09:54:22 · 697 阅读 · 0 评论 -
iOS日常开发之Xcode的缓存清理
Xcode缓存占内存太大,清理一下1、~/Library/Developer/Xcode/DerivedData/这个文件夹中保存的是Xcode的缓存文件,曾经在Xcode跑过的所有项目的索引、build的信息等都会保存在这里。删除后在下次打开项目编译的时候将会重新生成。由于这里包含了大量已经没用的项目的信息又懒得去筛选,于是把整个文件夹删了。2、~/Library/Developer...原创 2019-10-24 10:27:58 · 1587 阅读 · 0 评论 -
iOS开发之添加阴影效果
今天做项目,用到了添加阴影效果,笔记一下//添加阴影view.layer.masksToBounds = NO;view.layer.shadowOpacity=1;///不透明度view.layer.shadowColor = [UIColor colorWithHex:0x000000].CGColor;//阴影颜色view.layer.shadowOffset = CGS...原创 2018-10-18 17:47:54 · 3371 阅读 · 0 评论 -
RACSignal的基本方法说明
最近在做关于RACSignal的项目,做一下笔记 //创建一个基本 signal RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { [subscriber sendNext:@"1"]; [subscriber sendNex...转载 2018-09-14 18:13:11 · 2733 阅读 · 0 评论 -
IOS开发之ios10权限问题
ios10权限问题原创 2017-02-14 14:07:12 · 409 阅读 · 0 评论 -
iOS开发之关于图片发裁剪
关于图片的裁剪原创 2017-02-25 09:03:42 · 433 阅读 · 0 评论 -
IOS开发之相机、相册页面英文问题
相机、相册页面英文转成中文原创 2017-02-14 13:50:23 · 3340 阅读 · 0 评论