自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田风有的博客

师傅领进门,修行靠个人

  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除