- 博客(30)
- 收藏
- 关注
原创 Swift 序列 allSatisfy() 函数
一个闭包,用于指定要应用于序列中每个元素的条件。闭包接受一个元组作为输入参数,并返回一个。Bool: 如果序列中的所有元素都满足给定的条件,则返回。闭包抛出错误,则该函数会重新抛出该错误。检查序列中的所有元素是否满足给定的条件。,指示元素是否满足条件。
2024-04-22 23:36:43 185
原创 2024 Swift 最新面试题及答案
关键字用于限制类、属性和方法的继承和重写,从而提高代码的安全性和稳定性。以上是 Swift 和 SwiftUI 中监听属性值变化的几种方法,开发者可以根据具体需求选择适合的方法。这样做可以确保类的实现不会被修改或扩展,从而提高代码的安全性和稳定性。(扩展)允许你在不修改原始代码的情况下,扩展现有类型的功能,包括类、结构体、枚举和协议。是一种强大的工具,用于扩展已有类型的功能,使代码更加模块化、易于维护和扩展。是用于处理不同类型的实例的机制,而泛型则是一种编写灵活、可重用代码的机制。:通过在类的定义前加上。
2024-04-21 18:51:21 3369 2
原创 实现两个大数(数字字符串)相加
首先先校验两个字符串都是合法的数字字符串,不包含任何非数字字符,然后将两个输入的字符串转换为字符数组,并且反转数组,这样方便从低位到高位逐位相加。然后遍历两个字符数组,逐位相加,并且考虑到了进位的情况。最后再将结果反转回来,得到最终的加法结果。
2024-04-11 10:09:38 189
原创 寻找胡笳俱乐部
胡笳(HúJiā)是中国古代的一种传统乐器,也称为胡琴。它被认为是二胡的前身,在中国古代音乐中具有重要的地位。胡笳是由马尾和竹子制或的弓弦乐器,外观与二胡相似。它有两根弦,演奏者使用弓拉动琴弦发出声音。光明小区的小明从网上了解到胡笳,得知幸福小区有一家胡笳俱乐部,小明想去幸福小区寻找胡笳俱乐部。幸福小区可以看作一个n*n的矩形,y位置有一个路人,胡笳俱乐部所在的位置是(n,n),小明可以在(1,1)(1.n)(n,1)中任意一个位置开始自己的寻找。
2024-01-14 17:51:49 365
原创 Apple内存布局
在计算机中,内存大小的基本单位是字节,理论上来讲,可以从任意地址访问某种基本数据类型。但是实际上,计算机并非按照字节大小读写内存,而是以2、4、8的倍数的字节块来读写内存。因此,编译器会对基本数据类型的合法地址作出一些限制,即它的地址必须是2、4、8的倍数。那么就要求各种数据类型按照一定的规则在空间上排列,这就是对齐。在iOS,iPadOS,MacOS开发过程中,编译器会自动的进行字节对齐的处理,并且在64位架构下,是以8字节进行内存对齐的。
2023-04-06 22:53:07 209
原创 朋友圈找规律填数字题
朋友圈找规律填数字题朋友圈题哈哈哈,题目见图片朋友圈题哈哈哈,题目见图片 func numer(_ sequence:[Int]) -> Int { var m = 0 var n = 0 for (index,current) in sequence.enumerated() { if (index > 2) && ((index+1) < sequence.count) {
2021-01-24 02:20:32 3300
原创 组件化Pods制作远程私有库
组件化PodSpecs制作远程私有库提示:关于Git和CocoaPods相关的知识自己去熟悉,该文章只是个人记录PodSpecs制作远程私有库的学习笔记,下面是学习地方:1:Git官网:https://git-scm.com2:CocoaPods官网:https://cocoapods.org注意:Specs是存放私有库的地方。文章目录组件化PodSpecs制作远程私有库一、PodSpec托管平台二、创建远程PodSpec步骤1.创建远程PodSpec2.创建真正的私有库完结一、PodSp
2020-12-05 16:21:23 297
原创 两个个UICollectionView滚动和选中
列表滚动 需求滑动上面,下面选中对应,选中下面,上面滚动到对应位置上一个UICollectionView,下面一个UICollectionView,上面的CollectionView的只有一个section,下面的CollectionView有n个section,上面的数据源个数bannerArray等于下面的的数据源个数之和,数据格式一样。我测试的的json数据:{ "d...
2020-11-11 01:22:35 423
原创 工作中遇到大小端数据存储格式
大小端数据存储概念:大端模式:是指数据的高字节保存在内存的低地址中,而低子节数据保存在内存的高地址中。小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。新的需求:这是移动端日志数据传给服务器的格式:{“flag”:16,“item”:{“group”:“xxxxxx”,“mirror”:1,“items”:[{“flag”:1,“key”:“log”,“datas”:[“data:application/octet-stream;base64,xxxxxxx”]
2020-11-11 00:15:39 259
原创 面试遇到数学概率问题,记录一下
有一个气球,A、B、C三人开枪射击,他们命中目标的概率都是0.3 ,问气球被射中的概率为多少?解:由题意知3人同时射击一个气球,目标被击中的对立事件是目标没有被击中,A、B、C三人射击命中目标的概率:0.3;气球没有被击中的概率是0.7*0.7*0.7=0.343;所以气球被射中的概率为1-0.343 = 0.657。...
2020-07-22 17:09:14 708
原创 Swift 经典算法之快速排序
原理:快速排序:给基准数据找其正确索引位置的过程.1、给一个基准数据,一般是数组第0个,即target = array[0]2、从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小,就将high位置的值赋值给low位置3、从前往后扫描,如果扫描到的值小于基准数据就让low加1,如果发现有元素大于基准数据的值,就再将low位置的值赋值给high位置的值4、直到low=high结束循环,此时low或high的下标就是基准数据target在该数组中的正确
2020-07-22 01:06:07 480
原创 数组的最大出现次数的和
问:给定一个整形数组,如何找出数组中重复次数最多的数的和?- (NSInteger)findNumberWithSum:(NSArray *)dataArray { if (dataArray.count <= 0) { return 0; } NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:dataArray.count];//临时数组,存放出现次数 NSInteger
2020-07-21 22:23:37 143
原创 iOS 深入理解RunLoop运行原理和实际应用
特别要注意一下Mach port的概念,它是一个轻量级的进程间通讯的方式,可以理解为它是一个通讯通道,假如同时有几个进程都挂在这个通道上,那么其它进程向这个通道发送消息后,这些挂在这个通道上的进程都可以收到相应的消息。它受RunLoop的Mode影响(GCD的定时器不受RunLoop的Mode影响),当其加入到 RunLoop 时,RunLoop会注册对应的时间点,当时间点到时,RunLoop会被唤醒以执行那个回调。RunLoop 的创建是发生在第一次获取时,RunLoop 的销毁是发生在线程结束时。
2020-07-17 23:02:17 2865 2
原创 iOS 深入理解Runtime运行原理,即消息发送和消息转发
发送给对象的名称和一组参数。在Objective-C中方法调用是一个消息发送的过程。消息转发是一种功能强大的技术,可以大大增加Objective-C的表现力。什么是消息转发?简而言之,它允许未知的消息被困住并作出反应。换句话说,无论何时发送未知消息,它都会以一个很好的包发送到您的代码中,此时您可以随心所欲地执行任何操作。注意:当我们向一个对象发(实例方法,即减号方法)送消息时,runtime会在这个对象所属的这个类的方法列表中查找方法;
2020-07-17 23:00:09 330 1
原创 3只蜜蜂采蜜,使花和蜂之间松耦合实现
一朵花有Open和Close两种状态,3只蜜蜂在花Open的时候去采蜜,在花Close的时候回巢,用面向对象技术和Design Pattern方法模拟上面过程,输出如下:Flower OpenHummingbird 1's breakfast timeHummingbird 1's breakfast timeHummingbird 1's breakfast timeFlower CloseHummingbird 1's bed timeHummingbird 1's bed time
2020-07-17 15:44:10 445
原创 iOS 深入理解KVO底层实现原理
1.当某个类的对象第一次被观察后,系统会通过Runtime动态的创建一个派生类,继承原始类,如原始类为Member,则派生类为NSKVONotify_Member. 在添加观察之前派生类为NSKVONotify_Member的isa指针指向了原始类Member。实际上是重写了class方法来runtime该对象是属于那个类。2.派生类为NSKVONotify_Member重写原始类的四个方法 setter 用于通知观察者值已经发生改变 class 返回值为原始类 retu...
2020-06-30 19:32:19 544
原创 求平面内任意一点到x(正向)的夹角,即逆时针夹角
1、下面是swift代码:func tanRange(x:Double, y:Double) -> Double { if (x == 0 && y == 0) { return 0; } if (x == 0 && y > 0) { return 90; } if (x > 0 && y == 0) {
2020-06-30 12:52:17 408
原创 Leetcode 人民币找零,用最少数量的钞票组成某个金额
题目:已知不同面值的钞票,求如何用最少数量的钞票组成某个金额,求可以使用的最少钞票数量。面值:{1,2,5,10,20,50,100}。例如:给39,输出5。下面是C++代码,先导入:#include<vector>int CointsProblem(vector<int>& coins, int amount) { if (coi...
2019-10-27 22:38:46 1147
原创 LeetCode 爬楼梯算法实现
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定n是一个正整数。其实这个问题,可以用递归和动态规划解决,下面分别是两种实现方式:C++代码: int stairs(int n){ if(n==1||n==0||n==2){ return n; } ...
2019-10-27 22:03:03 380
原创 iOS 深入理解Block底层实现原理
## Block拷贝block的属性需要使用copy修饰,如果block一旦没有copy操作就不会在堆上,无法对block生命周期进行控制。使用注意:循环引用的问题。block在修改NSMutableArray,不需要添加__block,因为修改内容也是对数组的使用,只有对对象赋值的时候才需要__block。## __Block当使用__block修饰符时,基...
2019-10-27 21:36:34 520 1
原创 1.0二分查找算法Objective - C和swift
/*二分查找(也称折半查找)是很常见的一种在数组中查找数据的算法,作为一名程序员是应该必须会的。它的基础思想:获取数组的中间值,将数组分割成两份,利用中间值跟指定的值进行比较,如果中间值大于指定的值,就在数组的左边进行查找;如果中间值小于指定值,就在数组的右边进行查找。如此循环的执行下去,最终找到符合的值。二分查找优点:1.速度快 2.比较次数少 3.性能好当然了,缺...
2019-03-30 14:57:07 216
原创 iOS 如果有50个线程中的某一个完成,怎么开启第51个线程?
我使用GCDdispatch_group_t来实现的,下面是我的代码,如果有不对的地方欢迎大家指出,下面贴代码:__block NSInteger index = 0; dispatch_group_t group = dispatch_group_create(); dispatch_queue_t queue = dispatch_get_global_queue(DI...
2019-03-13 20:08:31 140
原创 iOS 几种定定时器实现
1.CGD定时器- (IBAction)countDown:(id)sender { __block int currentSeconds = 60;//设置总时间 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_sour
2015-08-31 23:07:55 313
原创 改变UITextView文字之间的间距
- (void)viewDidLoad { [super viewDidLoad]; [self showInfoPage]; [textview setEditable:NO]; [self selfAdaption];}- (void)selfAdaption{ NSMutableParagraphStyle *paragraphStyle = [[
2015-03-17 14:01:00 302
原创 简单的数据操作
数据库1、以一定的方式存储在一起2、能为多个用户共享3、具有尽可能小的冗余度4、与程序之间彼此独立的数据集合数据库模型1、层次结构模型2、网状结构模型3、关系结构模型关系数据库插入命令:INser INTO Demo_Table(‘demo_id’,’demo_name’)VALUES(1,’xiaoxiao’);更新(修改)命令upda
2014-07-10 09:11:52 279
原创 UINavigationController导航控制器个人笔记
UINavigationController导航控制器管理一系列显示层次型信息的场景。它创建一个视图管理器"栈",栈底为根视图控制器,用户在场景间切换时,依次将试图控制器压入栈中,且当前场景的试图控制器位于栈顶。要返回上一级,导航控制器将弹出栈顶的控制器,从而回到它下面的控制器。导航控制器还管理一个导航栏(UINavigationBar)。导航栏类似于工具栏,但它是使用导航项(UINavi
2014-07-01 23:10:29 397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人