- 博客(108)
- 收藏
- 关注
原创 Flutter 与 RN对比
Flutter是什么现在技术更新迭代真的很快,每隔几年就会出现一些新的技术。当然,Flutter出现有有一点时间了,只不过还未真是发布,但是已经有一些人在使用了。这篇文章主要内容来自我在公司内部的一次分享会,所以大部分内容都是提炼。Flutter 是由 Google 的工程师团队打造的,用于创建高性能、跨平台的移动应用的框架。 Flutter 针对当下以及未来的移动设备进行优化,专注于 Android and iOS 低延迟的输入和高帧率 Flutter的设计跟react-native很像,但是
2020-07-14 11:19:30 6125
原创 iOS组件化开发从开始到完整总结
一.组件化介绍需求来源随着项目规模不断扩大,业务模块增多,开发过程中会有多条产品线(多人或多小组开发不同的功能);如果用传统的开发模式,会导致代码臃肿,编译速度越来越慢,开发效率低下,代码维护成本越来越高.组件化优势代码逻辑和项目结构清晰;代码利用率高,迭代效率高;可以快速集成,并能做单元测试;每个组件可以单独运行,组件之间的耦合度低.组件化模块划分基础组件: 宏定义/自定...
2019-09-19 18:03:29 5087
原创 (2024年)iOS OC面试题,Swift面试题,Flutter面试及答案
第一大类OC面试题 一.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情。1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编写。2). MVVM模式:Model View ViewModel 把模型 视图 业务逻辑 层进行解耦和编写。3). 单例模式:通过static...
2017-07-17 09:13:12 47866 4
原创 runtime
目录:runtime 概念 runtime 消息机制 runtime 方法调用流程「消息机制」 runtime 运行时常见作用 runtime 常用开发应用场景「工作掌握」 1.runtime 交换方法 2.runtime 给分类动态添加属性 3.runtime 字典转模型(Runtime 考虑三种情况实现) runtime 运行时其它作用「面试熟悉」 1.动态添加方法 ...
2017-07-01 15:49:15 629
原创 socket网络编程
关于TCP是一种流模式的协议,UDP是一种数据报模式的协议,这里要说明一下,TCP是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据自己看着办。socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。因此开发者并不需要控制这个过程。
2024-10-12 06:10:07 558
原创 iOS的App启动详细过程(底层知识)
1.虚拟内存 & ASLR1.虚拟内存 & ASLR在早期计算机中,这就造成了下面两个问题1.内存不够用2.数据安全问题。
2024-08-15 15:32:26 1159
原创 多线程-深入理解GCD
一,Dispath Queue.dispatch_async(queue, ^{ //block});用dispatch_async这样的函数将block追加到Dispatch Queue中。而block内容便是想执行的任务。而Dispatch Queue,指的就是执行处理的等待队列。Dispatch Queue有着先进先出的原则。他会把你先放进去的任务先拿出来执行。Dispatch Queue有两种,分别为Serial Dispatch Queue 和 Concurrent Dispa
2021-09-14 21:36:25 229
原创 单例加锁和不加锁的区别
一,单线程模式单例// 单线程单例+(instancetype)sharedLoadData{ static Singleton *singleton; if (!singleton ) { singleton = [[Singleton alloc] init]; } return singleton;}1.单线程单例只有在单个线程使用的情况下使用,在多线程的情况下,会产生线程不安全的情况,严格意义上来说,我们还需要把alloc方法变为私有方法才行,严格的单例是不允
2021-09-14 20:16:57 2272
原创 iOS开发ReactiveObjC总结
学习 RAC 我们首先要了解 RAC 都有哪些类RACSignal 信号类 RACSubject 信号提供者,自己可以充当信号,又能发送信号.使用场景:通常用来代替代理,有了它,就不必要定义代理了。 RACSequence 信号的集合 RACMulticastConnection用于当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以...
2019-09-18 19:30:22 1266
原创 React Native 生命周期
前言: 在面向对象编程中,任何对象的存在都会存在生命周期。类似我们iOS 的View,就会有LoadView,ViewWillAppear,ViewDidLoad等等生命周期。RN也不例外,这篇主要学习RN的生命周期,在开发中如果掌握了并熟练的运用生命周期函数的话,往往开发能事半功倍。React Native生命周期简介如图,可以把组件生命周期大致分为三个阶段:...
2019-09-16 17:31:49 673 1
原创 制作 macOS Mojave U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
首先,准备一个8GB 或更大容量的 U盘,并备份好里面的所有资料。 下载好 macOS Mojave 正式版的安装程序备用,先不要启动安装。 打开 “应用程序 → 实用工具 → 磁盘工具”,将U盘「抹掉」(格式化) 成「Mac OS X 扩展(日志式)」格式、GUID 分区图,并将 U 盘命名为「Mojave」(下图序号3处)。注意:这个盘符名称必须与后面的命令里的名称一致,需要认真看...
2019-09-05 20:40:42 20945 1
原创 Flutter Mac环境搭建 iOS环境
1、进入官网下载Flutter的sdk,官网:https://flutter.dev/docs/development/tools/sdk/releases?tab=macos下载箭头所指内容2、复制SDK 将它配置到你想安装SDK的目录(如/Users/fan/flutter_mac/flutter)如图3、将Flutter安装目录的bin目录配置到环境变量,然后把...
2019-09-04 06:32:57 1040
原创 iOS 把图片资源打包成bundle
1. 创建bundle,如图,点击 + ,弹出选择框, macOS 下的Framework & Library ,点击bundle,输入bundle的名字,然后点击 finish。图1.1图1.22. 点击创建好的bundle ,修改属性图2.1"Base SDK" 设置为 "Latest iOS (iOS 11.2)" (Xcode 9.2为例)...
2019-05-11 12:24:57 555
原创 上传自己库到Cocoapods和遇见的各种问题解决
第一步,上传自己写好的代码让别人去下载。先安装Cocoapods 端口输入:sudo gem install cocoapods 安装完成后。开始注册trunk第二步,注册trunk最好账户和邮箱和github账户和绑定邮箱一致,代码如下 端口输入:pod trunk register xxxxxx@qq.com '账户名' --verbose 回车第三步,去你上一步...
2019-04-28 15:48:55 7460 1
原创 iOS多线程之 GCD
GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码(但是更优的做法是我们自己管理线程,这个后面会说到)GCD的两个核心任务:执行什么操作 队列:用来存放任务GCD使用的两个步骤创建任务:确...
2019-03-13 16:03:49 464
原创 ios敏捷开发的理解
一,根据以下几个问题来谈谈敏捷开发1.什么是敏捷开发?2.为什么使用敏捷开发?3.如实使用敏捷开发?4.采用敏捷开发的产品效果?二.什么是敏捷开发?敏捷开发是一种价值和原则,指导我们更加高效的开发。 敏捷开发以用户需求为核心,采用迭代,循序渐进的方式开发软件,目的在于快捷覆盖,响应市场需求。 大项目划分小项目,分别完成,独立运行。 敏捷开发特征。 敏捷开发原则...
2019-03-13 14:37:56 1649
原创 使用Django搭建web服务器(最最正确的方式)
1.先在PyCharm工具里新建一个自己需要的项目名称:如Django.2.打开终端进入你刚才新建项目目录中Django 如:cd /Users/tianfengyou/Desktop/Python/Course/Csh_Text/Django3.点击回车:tianfengyoudeMacBook-Pro:Django tianfengyou$4.终端输入:pyhon3 -m venv...
2019-01-10 15:23:30 27414 3
原创 【iOS】weak底层实现
weak基本用法weak是弱引用,用weak描述修饰或者所引用对象的计数器不会加一,并且会在引用的对象被释放的时候自动被设置为nil,大大避免了野指针访问坏内存引起崩溃的情况,另外weak还可以用于解决循环引用。weak原理概括weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组。weak的底层实现的原理是什么?Runtime维护了一个...
2018-08-27 16:11:16 1188
原创 iOS-Carthage 安装以及使用
Carthage github地址,具体详情请点击查看Carthage 简介Carthage 类似于 CocoaPods,为用户管理第三方框架和依赖,但不会自动修改项目文件和生成配置 Carthage 是去中心化的依赖管理工具,安装依赖时不需要去中心仓库获取 CocoaPods 所有依赖的索引,节省时间 对项目无侵入性,Carthage 设计上也比较简单,利用的都是 Xcode ...
2018-07-25 10:46:52 418
转载 iOS 各种项目源码集
一:源代码实例1:快速搭建项目源代码地址:https://github.com/wujunyang/MobileProject2:高仿美团iOS版地址:https://github.com/lookingstars/meituan3:模仿网易新闻做的精仿网易新闻地址:https://github.com/dsxNiubility/SXNews4:支付宝高仿版地址:h...
2018-07-20 15:00:49 10887
原创 修改React Native端口(如何同时运行多个React Native、8081端口占用问题)
当我们运行一个React Native项目的时候,React Native会启动一个默认端口号为8081的本地服务,该8081的服务就是React Native项目的一个本地服务器,用于提供JSBundle包和一些静态资源。这一切都是React Native帮开发者配置好的,一切都是那么简便,但如果出现如下几种情况,那么你需要认真阅读本文了:8081端口被其他程序占用(比如杀毒软件),导致Reac...
2018-07-02 11:43:49 1551
原创 iOS 静态库制作(Xcode9.0,Framework制作,Bundle制作
基本知识:1. 库类别静态库(.a 和.framework)动态库(.liby和.framework)2.静态库和动态库的区别2.1静态库平时我们用的第三方SDK基本上都是静态库。静态库在项目编译时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。静态库很大的一个优点是减少耦合性,因为静态库中是不可以包含其他静态库的,使用的时候要另外导入它的依赖库,最大限度的保证了每一个静态库都是独立的,不会...
2018-06-11 11:38:46 1616
原创 Mac下安装及配置Eclipse
1.安装Eclipse前先确认你的Mac上是否已安装java运行环境。进入终端,输入”java -version”,如果返回了java版本号则说明已安装,否则,请先安装java运行环境: 2.访问eclipse官方首页http://www.eclipse.org/home/index.php ,点击右上角“Download”按钮: 3.这里列出了多种下载安装包,根据你的需求来选择。由于我们需要开发...
2018-04-03 16:44:39 11650 1
原创 现有iOS项目集成React Native过程记录
在搭建配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用它,只是有时安装库很慢,还不如复制粘贴库来的快,就删除它了,这里就使用手动集成的方式吧。 1. 新增React Native文件路径和json说明文件,进入项目根目录(*.xcodeproj文件所在目录): mkdir reactnative ...
2018-03-20 13:19:32 1133
原创 在Mac系统下搭建React Native开发环境
这里记录一下在Mac系统下搭建React Native开发环境的过程: 1. 安装HomeBrew:1/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装完后如下所示: \ 可使用命令:”brew -v“查看其版本。 2. 安装Node....
2018-03-20 13:14:46 3691
原创 Runtime方法的使用-class类
//// ViewController.m// RunTimeDemo//// Created by 田风有 on 2017/11/29.// Copyright © 2017年 kang. All rights reserved.//#import "ViewController.h"#import "Person.h"#import <objc/runtime.h>#imp...
2018-03-14 14:37:21 1478
转载 区别方法isKindOfClass、isMemberOfClass和isSubclassOfClass
一、苹果官方API的解释是:isKindOfClass:Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class.isMemberOfClass:Returns ...
2018-03-12 15:17:08 1687
原创 Mac 安装 MySQL
安装登录MySQL网站用dmg的方式安装。Download MySQL Community Server或者常规方式,打开官网 : http://www.mysql.com/downloads/ 进入, 点击下方的DOWNLOADS : MySQL Community Server选择dmg文件下载选择选择不登录,直接下载接着, 会跳转到如下页面, 你只需要选择不登录,直接下载即可记住临时密码下载...
2018-03-06 15:47:00 281
原创 Mac下配置神器PhpStrom开发环境
php这么流行,不能不研究一下。首先得找到好用的工具,见网上大神们都推荐神器phpStorm,那我也追追风,下载了一个phpStorm 7.1。平时工作都是在mac系统,所以这儿只介绍mac系统神器的配置。安装我就不用多说了嘛。安装成功后,接下来就运行。运行后当然是创建一个了新工程,简单一点,我们创建一个空工程。 刚才都说了,是空工程,那接着我们给它加点料,新建一个php文件,暂且命名为index...
2018-02-26 15:24:32 3244
原创 Mac终端使用技巧 或Linux中常用操作命令
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件...
2018-02-09 16:15:46 7233
原创 iOS AppStore 转让APP
转让APP有一个条件,项目上线之后才可以转让一 打开iTunes Connect 登陆from 账户 就是要转出的哪一个账户点击进入要转出的那款APP 我们可以看到 在APP 信息 已经上线的APP是这样子的屏幕快照 2016-02-15 11.18.25.png而提交中的APP是没有这个选项的屏幕快照 2016-02-22 11.08.34.png点击转让屏幕
2017-11-09 15:07:44 806
转载 iOS开发应用上架必读最新苹果审核规则(史上最全版)
学习交流及技术讨论可新浪微博关注:极客James1. 条款和条件 • 1.1 为App Store开发程序,开发者必须遵守 Program License Agreement (PLA)、人机交互指南(HIG)以及开发者和苹果签订的任何其他协议和合同。以下规则和例证旨在帮助开发者的程序能获得App Store的认可,而不是修改或删除任何其他协议中的条款。2. 功能 • 2.
2017-09-13 09:50:00 17748
原创 iOS开发网络篇—Socket编程
一、网络各个协议:TCP/IP、SOCKET、HTTP等网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。http协议对应于应用层tcp协议对应于传输层ip协议对应于网络层三者本质上没有可比性。
2017-08-10 17:03:45 289
原创 UIPickerView的使用
简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活。UIPickerView直接继承了UIView,没有继承UIControl,因此,它不能像UIControl那样绑定事件处理方法,UIPickerView的事件处理由其委托对象完成。使用UIPickerView的
2017-08-03 14:27:45 650
原创 iOS开发中数据库常用的语句
一. 数据如何存入数据库! { 1.创建一张表.(根据存储的数据特点,创建对应的表!) 2.将数据存储在"表"中 } 二. 数据库使用 { 1. database(DB) File: 数据库文件路径! 数据库中的所有数据都保存在这个文件中! 数据库(SQL)语句是不区分大小写的! 如果是系统的关键字大写!自己的就用小写
2017-07-27 17:09:45 373
原创 IOS常见的加密方法,常用的MD5和Base64
MD5 iOS代码加密: 1. MD5 iOS代码加密 创建MD5类,代码如下:#import #import @interface MD5String : NSObject+(NSString *)MD5:(NSString *)input;@end 2. #import "MD5String.h"@implementation
2017-07-27 14:35:52 454 1
原创 iOS开发内购详细
一、最近公司很多的项目用到了内购,抽空整理下内购的详细内容吧。如对你有帮助,请不要吝惜打赏和喜欢,谢谢!一....iOS开发内购全套图文教程======================第一部分协议===============第一步.png第二步.jpg第三步.jpg第四步.png第五步.png
2017-07-26 10:48:35 1820 1
转载 单链表的插入与删除
在链表这种特殊的数据结构中,链表的长短需要根据具体情况来设定,当需要保存数据时向系统申请存储空间,并将数据接入链表中。对链表而言,表中的数据可以依此接到表尾或连结到表头,也可以视情况插入表中;对不再需要的数据,将其从表中删除并释放其所占空间,但不能破坏链表的结构。这就是下面将介绍的链表的插入与删除。1. 链表的删除如创建一个学生学号及姓名的单链表
2017-07-13 10:06:46 862
转载 C++ 二叉树创建、遍历访问、删除
代码包含:二叉树数组创建(前序)、前序、中序、后序遍历、节点访问、删除代码说明:该代码使用模板建立,一些地方并未完善,比如array[index]==-1,仅仅使用于数字类型,如果二叉树存储的是char或string,需在这之前判断类型,给予特定的空标识,对于节点的访问,使用一个函数指针传递对节点的操作,删除只能使用后序遍历的方式#includeusing namespace
2017-07-13 10:04:01 373
转载 C++常用排序算法研究
首先介绍一个计算时间差的函数,它在头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了。函数开头加上 clock_t start = clock(); 函数结尾加上 clock_t end = clock(); 于是时间差为: end - start不过这不精确的 多次运行时间是不同的 和CPU 进程有关吧(先总结一下:以下算法以时间和空间以
2017-07-13 10:02:37 251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人