MAYBESHEWILL

Life is struggle

Objective-C 消息发送与转发机制原理

学习笔记

消息发送和转发流程可以概括为:消息发送(Messaging)是 Runtime 通过 selector 快速查找 IMP 的过程,有了函数指针就可以执行对应的方法实现;消息转发(Message Forwarding)是在查找 IMP 失败后执行一系列转发流程的慢速通道,如果不作转发处理,则会打日志和抛出异常。 本文不讲述开发者在消息发送和转发流程中需要做的事,而是讲述原理。能够很好地阅读本...

Tips

持续整理

Xcode 选英文字体 1 2 defaults write -app Xcode NSFontPanelAttributes -string "1,0" 重启Xcode生效 Ruby源更换 1 2 3 4 gem sources -l 当前 gem sources --remove http://rubygems.org/ 删除 gem sources -a http:...

Mac搭建nginx+rtmp服务器 推流

学习笔记

环境 一、安装Homebrow 已经安装了brow的可以直接跳过这一步。 执行命令 1 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 如果已经安装过,而想要卸载: 1 ruby -e "$(curl -fsSL https://raw.github...

iOS为UIView添加虚线边框

学习笔记

这玩意不经常用,但是属性不好记得住,做个笔记整理一下. 效果如下: 主要代码: 可通过修改UIBezierPath来改变虚线框的路径。如果想把边框绘制成实线,可将borderLayer.lineDashPattern置为nil即可。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CGSize screenSize = ...

iOS UITextField 文字偏移 解决办法

跳坑

1 self.automaticallyAdjustsScrollViewInsets = NO;

iOS横竖屏控制和事件处理

又一篇

首先,确保App本身应该允许转屏切换: 再次,我的App里面都是走UINavigationController进行界面push切换的,所以首先创建一个UINavigationController的子类,并设定允许转屏: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 @implementatio...

iOS 开发中的 Self-Manager 模式

解读

Self-Manager源于我们团队内部的黑话,“诶?你刚去的创业公司有几个 iOS 开发啊?” “就我一个” “靠,你这是 Self-Manager 啊” 最近,这个思路被我们当做了一种设计模式,即赋予一个 Widget 更大的权利,让其自己负责自己的事件。 举个简单的栗子,这种负责展示头像的视图: 它的职责包括: 通过传入的 URL,加载并展示头像图片 显示一些附属信息...

纯代码创建UICollectionView步骤以及简单使用

解读

UICollectionView主要用于瀑布流,由于一直接触较少,每次需要使用的时候都从网上翻阅资料,此次自己总结整理,以备不时之需。 collectionView和tableView最大的不同之处就是需要自定义cell,所以第一步自定义collectionViewCell .h文件 1 2 3 4 5 6 7 8 9 #import <UIKit/UIKit.h>...

在AWS上安装Jenkins

How To Install Jenkins On AWS Liunx

这是我的实际应用,应该是通用于Linux的. 我首先按照我的博客里的两篇教程进行环境搭建.这个过程可能已经很友好的安装了一些东西.所以接下来的过程很顺畅. 下载Jenkins: 1 2 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm --im...

Mac Jenkins Brew 安装

Jenkins Brew Way

安装配置 Jenkins 通过命令行安装: 1 brew cask install jenkins 前提是已经安装Java 1 brew cask install java 安装成功会自动启动并打开网页 启动执行脚本目录所在: 安装包所在: 服务项所在: 可以通过命令开始停止: 1 2 3 4 // 方法一: sudo launchctl l...