- 👨 My name is Jinqiao Zhao.
- 💻 I’m a passionate self-taught iOS&Web developer and a freelance software engineer from China.
- 🌱 I’m currently learning multi-platform application development such as dart&flutter.
- 🤖 In addition to coding, I use CI/CD tech to make work more efficient.
- 👯 I’m looking to collaborate on iOS/Web project.
- 💬 Ask me about anything, I’m happy to help.
- 📫 You can reach me by email.
gitalk-comment's Introduction
gitalk-comment's People
gitalk-comment's Issues
【面试题】OC 的类信息存放在哪里? | JQ♡TECH
https://jqz3.tech/2018/07/18/class-info/
objc4 源码 NSObject.h#L53-L58@interface NSObject { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-interface-ivars" Class isa OBJC_ISA_AV
method_t | JQ♡TECH
https://jqz3.tech/2019/09/02/method-t/
method_t 是对方法 / 函数的封装 struct method_t { SEL name; // 方法名 const char *types; // 编码(返回值类型,参数类型) IMP imp; // 指向方法的指针(方法地址) }
删除通过 pkg 安装包安装的 Python | JQ♡TECH
https://jqz3.tech/2021/06/09/uninstall-python/
下面以 Python 3.7 版本为例: # 删除 Python 3.7 安装路径下的所有文件 $ sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.7 # 删除程序文件夹中所有 Python 3.7 相关文件 $ sudo rm -rf /Applications&
SVN 常用指令 | JQ♡TECH
https://jqz3.tech/2016/09/15/SVN-code/
基本使用帮助信息$ svn help $ svn help help
RN(2) Hello World again | JQ♡TECH
https://jqz3.tech/2016/10/02/RN(2)_Hello_World_again/
Hello World againimport React, { Component } from 'react'; import { AppRegistry, Text } from 'react-native'; class MyFirstReactNativeProject extends Component 
git rebase | JQ♡TECH
https://jqz3.tech/2020/05/14/git-rebase/
- Rebase Introduction git checkout -b bugFix # edit and add git commit git checkout master # edit and add git commit git checkout bugFix git rebase master
NJKWebViewProgress 的使用 | JQ♡TECH
https://jqz3.tech/2016/08/30/NJKWebViewProgress/
安装pod 'NJKWebViewProgress'
Cycript 简单使用 | JQ♡TECH
https://jqz3.tech/2020/08/06/cycript/
安装Cydia 里安装 Cycript:
[Python] ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed | JQ♡TECH
https://jqz3.tech/2021/07/22/CERTIFICATE-VERIFY-FAILED/
解决通过官网安装包安装 Python,执行 pip install 时报 ssl 证书验证失败错误: ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
MJExtension 的使用 | JQ♡TECH
https://jqz3.tech/2016/09/06/MJExtension/
Define the models// Define JQPerson model #import <Foundation/Foundation.h> @Class JQChild; typedef NS_ENUM(NSInteger, JQSex) { JQSexMale = 0, JQSexFemale,
RN(8)Using a ListView | JQ♡TECH
https://jqz3.tech/2016/10/25/RN(8)_Using-a-ListView/
import React, { Component } from 'react'; import { AppRegistry, View, Text, Image, ScrollView } from 'react-native'; export default class AwesomeProject e
用 yarn 代替 npm 管理 React-Native 包依赖 | JQ♡TECH
https://jqz3.tech/2016/11/22/change-npm-to-yarn/
首先得安装 yarn,可参考Yarn Installation on macOS在命令行中输入:$ yarn global add react-native-cli 之后使用 react-native init 就是用 yarn 来下载包:
Yarn Usage | JQ♡TECH
https://jqz3.tech/2016/10/13/yarn-usage/
初始化一个新项目$ yarn init 添加依赖包$ yarn add [package] $ yarn add [package]@[version] $ yarn add [package]@[tag]
RN(6) Width Height | JQ♡TECH
https://jqz3.tech/2016/10/06/RN(6)_Width_Height/
Width & Height1. Fixed Dimensions import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; class MyFirstRe
【面试题】KVO 的实现 | JQ♡TECH
https://jqz3.tech/2019/08/22/kvo-impl/
以对 JQObject 对象的 foo 属性进行 KVO 监听为例: KVO 会在运行时生成 NSKVONotifying_JQObject 类: NSKVONotifying_JQObject 类继承自 JQObject; 并替换父类 JQObject 的 setFoo: 方法实现为 (Foundation __NSSetXXXValueAndNotify) 其中 XXX 为监听属性类型;
git cherry-pick | JQ♡TECH
brew 安装 Xcode 管理工具 xcodes 时报错 | JQ♡TECH
https://jqz3.tech/2021/06/09/install-xcodes-error/
brew 安装 xcodes 时报错:Error: Permission denied @ dir_s_mkdir - /usr/local/Caskroom/xcodes
记录 swift 中的一些关键字及操作符 | JQ♡TECH
https://jqz3.tech/2020/07/15/swift-keyword-operator/
Type Aliastypealias AudioSample = UInt16 Optional Binding if let ... { ... } if let constantName = someOptional { // statements } while let ... { .
【面试题】Objective-C 中 self 与 super 的区别 | JQ♡TECH
https://jqz3.tech/2016/08/16/difference-between-self-and-super-in-Objective-C/
以下代码的打印结果是什么?为什么?@interface JQApple : JQFruit @EnD @implementation JQApple - (instancetype)init{ self = [super init]; if (self) { NSLog(@"%@", NSStringFromCla
记录相关工具安装教程 | JQ♡TECH
https://jqz3.tech/2020/10/10/tools/
安装教程 CentOS 下安装宝塔面板 CentOS 下安装 Docker Engine CentOS 下安装 Docker Compose Docker 下部署 cnpm Docker 下安装 Jenkins Docker 下安装 Gogs Docker 下安装 GitLab
【面试题】对象的 isa 指针指向哪里? | JQ♡TECH
https://jqz3.tech/2018/07/19/isa-to/
OC 中对象分为: 实例对象(instance object) 类对象(class object) 元类对象(meta-class object) 其中: 实例对象的 isa 指针指向类对象; 类对象的 isa 指针指向元类对象; 元类对象的 isa 指针指向基类的元类对象。
RN(1) Build The Environment | JQ♡TECH
https://jqz3.tech/2016/10/02/RN(1)_Build_The_Environment/
搭建开发环境 安装 Homebrew 以搭建 Node 环境$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 利用 Homebrew 安装
【面试题】关联对象的实现原理 | JQ♡TECH
https://jqz3.tech/2019/08/28/associate-impl/
flowchart LR subgraph AssociationsManager A["AssociationsHashMap &get()"] end subgraph AssociationsHashMap B["DisguisedPtr<objc_object>"] C["ObjectAssociati
利用 ipatool 下载 ipa 包 | JQ♡TECH
https://jqz3.tech/2021/07/14/ipatool/
ipatoolipatool 是一个命令行工具,可以让你搜索下载 App Store 上的 iOS 应用。 安装$ brew tap majd/repo $ brew install ipatool
【面试题】如何给 Category 添加成员变量? | JQ♡TECH
https://jqz3.tech/2019/08/28/category-ivar/
通过关联对象: /** * Sets an associated value for a given object using a given key and association policy. * * @param object The source object for the association. * @param key The key for the ass
[Python] urlopen error [Errno 8] nodename nor servname provided, or not known | JQ♡TECH
https://jqz3.tech/2021/07/22/python-errorno-8/
在 /etc/hosts 文件中加入 127.0.0.1 hostname: /etc/hosts127.0.0.1 hostname
位段与共用体 | JQ♡TECH
https://jqz3.tech/2019/08/29/union-bit-field/
位段信息的存取一般以字节为单位。实际上,有时存储一个信息不必用一个或多个字节,例如,“真”或“假”用0或1表示,只需1位即可。在计算机用于过程控制、参数检测或数据通信领域时,控制信息往往只占一个字节中的一个或几个二进制位,常常在一个字节中放几个信息。
让 NS&UICollectionView 对齐 | JQ♡TECH
https://jqz3.tech/2020/05/20/JQCollectionViewAlignLayout/
JQCollectionViewAlignLayout一个基于流式布局 (flow layout) 的自定义布局对象。支持设置 NS&UICollectionView 水平及竖直方向的对齐方式,以及从右到左及从左到右的排列顺序。
【面试题】+initialize 相关 | JQ♡TECH
https://jqz3.tech/2019/08/28/initialize/
- initialize 方法会在什么时候调用?+ initialize 方法会在类第一次接收到消息时调用。
objc_msgSend 执行流程 | JQ♡TECH
https://jqz3.tech/2019/09/02/objc-msgSend/
flowchart TB A(objc_msgSend) B{消息接收者是否为nil} C([退出]) D{在 cache 中查找} E{在 class_rw_t 中查找} F{在 cache 中查找} G{在 class_rw_t 中查找} H{superclass == nil} I{是否动态方法解析} J([调用方法结束查找]) K([调用方法
【面试题】Category 的实现原理 | JQ♡TECH
https://jqz3.tech/2019/08/27/category-impl/
graph TB subgraph objc4 subgraph objc-os.mm A[_objc_init] D[map_images_nolock] end subgraph objc-runtime-new.mm C[map_images] E[_read_images] F[loa
RN(5) Style | JQ♡TECH
https://jqz3.tech/2016/10/05/RN(5)_Style/
Styleimport React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; class MyFirstReactNativeProject extends Componen
利用 U 盘制作 Big Sur 系统盘 | JQ♡TECH
https://jqz3.tech/2021/06/10/install-macos-big-sur/
$ sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/YourVolume
isa_t | JQ♡TECH
https://jqz3.tech/2019/08/30/isa_t/
isa 在 arm64 架构之前,isa 就是一个普通的指针,存储着 Class、Meta-Class 对象的内存地址 从 arm64 架构开始,对 isa 进行了优化,变成了一个共用体 (union) 结构,还使用位域来存储更多的信息
RN(7) Layout With Flexbox | JQ♡TECH
https://jqz3.tech/2016/10/07/RN(7)_Layout_with_Flexbox/
Layout with Flexbox1. Flex Directionimport React, { Component } from 'react'; import { AppRegistry, StyleSheet, View } from 'react-native'; class MyFirstReactNativ
vscode 更改显示语言 | JQ♡TECH
https://jqz3.tech/2016/10/23/how-to-change-vscode-language/
Configure Language 指令 shift + command 唤出 Command Palette 输入 Configure Language 确定 编辑 locale.json 文件{ // 定义 VSCode 的显示语言。 // 请参阅 https://go.microsoft.com/
class_rw_t 与 class_ro_t | JQ♡TECH
https://jqz3.tech/2019/09/02/class-rw-ro-t/
结构通过阅读 obj4 源码可以得出 class_rw_t 与 class_ro_t 结构(部分省略),如下:(objc4 源码版本:objc4-818.2) flowchart LR subgraph class_rw_t A["class_ro_t *ro()"] B["method_array_t methods()"] C
通过 Apple Configurator 2 获取 ipa | JQ♡TECH
https://jqz3.tech/2021/06/10/get-ipa/
准备 手机已安装该应用 电脑安装 Apple Configurator 2
【面试题】KVC 的实现 | JQ♡TECH
https://jqz3.tech/2019/08/22/kvc-impl/
setValue:forKey:利用 hopper 分析 setValue:forKey: 实现:
vim 操作笔记 | JQ♡TECH
https://jqz3.tech/2019/06/10/vim/
vimtutor可以在终端执行 vimtutor 进入教程,如图所示:
UIWebView 的简单使用 | JQ♡TECH
https://jqz3.tech/2016/08/30/UIWebView/
简介 你可以在你的 APP 中使用 UIWebView 内嵌网页内容,你也可以在网页浏览历史中前进或后退,甚至利用代码改变网页内容。除了 HTML 网页以外,UIWebView 还可以用来展示其它内容,例如:Keynote、PDF 以及 Pages 文档,但是为了富文本的更好渲染,还是最好使用 UITextView。
RN(4) State | JQ♡TECH
https://jqz3.tech/2016/10/04/RN(4)_State/
Stateimport React, { Component } from 'react'; import { AppRegistry, Text, View } from 'react-native'; class Blink extends Component { constructor(props) &
【面试题】一个 NSObject 对象占用多少内存? | JQ♡TECH
https://jqz3.tech/2018/07/16/NSObject-memory-size/
objc4 源码 NSObject.mm#L2543-L2545+ (id)alloc { return _objc_rootAlloc(self); } NSObject.mm#L1941-L1947// Base class implementation of +alloc. cls is not nil. &#x
RN(3) Props | JQ♡TECH
https://jqz3.tech/2016/10/03/RN(3)_Props/
PropsBananasimport React, { Component } from 'react'; import { AppRegistry, Image } from 'react-native'; class MyFirstReactNativeProject extends Component {
fork 同步 | JQ♡TECH
https://jqz3.tech/2020/05/13/syncing-a-fork/
Configuring a remote for a forkgit remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git Syncing a forkgit fetch upstream git checkout master git merge ups
block 的使用 | JQ♡TECH
https://jqz3.tech/2016/08/27/block-usage/
前言 ReturnType:你所想要返回的数据类型; ParameterType:你所要传递的参数类型; parameterName:你所要传递的参数名; blockName:你所构造的 block 名。
【面试题】+load 相关 | JQ♡TECH
https://jqz3.tech/2019/08/27/load/
+load 方法的调用顺序? 先调用类的 +load 方法; 按照编译先后顺序 (Build Phases -> Compile Sources) 调用(先编译先调用); 调用子类的 +load 方法会先调用父类的; 然后调用分类的 +load 方法; 按照编译先后顺序 (Build Phases -> Compile Sources) 调用(先编译先调用)。
SVN 的简单使用 | JQ♡TECH
https://jqz3.tech/2016/09/08/SVN/
创建代码库$ svnadmin create /Users/Joker/svn/MyRepo
cache_t 方法缓存 | JQ♡TECH
https://jqz3.tech/2019/09/02/cache-t/
cache_t 相关快捷方法 objc-runtime-new.h#L338-L550struct cache_t { struct bucket_t *buckets() const; // 散列表 unsigned capacity() const; // 散列表的长度 mask_t mask()
Yarn Installation | JQ♡TECH
https://jqz3.tech/2016/10/13/yarn-installation/
macOSHomebrew你可以通过 Homebrew package manager,这同时会安装 Node.js 如果没有安装的话。 $ brew update $ brew install yarn 设置 Path 环境变量你需要通过你的终端设置 Path 环境变量,使 Yarn 的执行包可以全局访问。 在你的配置文件(可能是你的 .profile,.bashrc,.zshrc文件,等等。
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.