快速上传图片到七牛(Alfred+七牛)
Mac 下可以使用 Alfred 实现快速上传图片到七牛,
需要
- Alfred 正式版
- 七牛帐号(个人账号就行,有免费空间)。七牛地址
使用方法
- 下载插件,按照作者说明安装配置。
注意事项
- 复制的文件不能有中文字符,不然上传失败,也无错误信息。大坑,害我重装
UIViewController 生命周期的主要包括9个方法:
默认初始化
业务逻辑
可以初始化数据
注意事项
不要创建 view。不要调用 self.view。因为view是lazyinit的,调用 self.view,会导致viewcontroller创建view。
加载 view,如果是从 nib 文件或者 stroyboard加载,则加载相关文件,如果没有,则创建默认的 view。
业务逻辑
不要重载该方法,创建 view 可以在viewDidLoad中
注意事项
不要创建view。不要调用 self.view。要调用都在 [super loadView]后。
加载view完成。
业务逻辑
创建附加 view,但是 self.view 的 frame 不可用。
注意事项
该方法可能调用多次。
view被添加到superview之前,切换动画之前调用。
业务逻辑
显示前的处理。如键盘弹出,状态条和navigationbar颜色。
注意事项
此时 View的 frame 不定,不能利用frame的值
view 已经显示,动画切换完成
业务逻辑
业务处理 ,可以使用 self.view 的 frame
注意事项
暂无
view移出之前,还未调用 removeFromSuperView
业务逻辑
根据具体业务处理
注意事项
暂无
view移出完成,动画完成。
业务逻辑
处理view 不显示时的一些业务逻辑。
注意事项
暂无
一般发生在内存警告时,view置为nil
业务逻辑
可以释放其他view,比如viewcontroller的 self.view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建。
注意事项
暂无
销毁时调用
业务逻辑
移除观察者,定时器等
注意事项
在 ARC 环境下,不能主动调用 dealloc 方法。
如果启动页采用 Launch Imaged Sourc,则需要添加iPhoneX的启动图,不然整个 App 上下将有部分不能显示区域。
启动图的尺寸为:1125*2436px 即:375*812@3x
iOS11为UIViewController和UIView增加了两个新的属性safeAreaInsets和safeAreaLayoutGuide, 通过这两个属性我们可以获得安全区域的范围,
我们要做的是让那些不能被遮挡的内容和控件在安全区域范围内显示,
新增方法,用于在 SafeArea 改变时,重新布局
由于引入了 safeArea,需要修改topLayoutGuide 和 bottomLayoutGuide。
1 | // 对于 |
针对 iOS11,可以引入 safeArea
1 | if (@available(iOS 11.0, *)) { |
新增的 safeArea示例
1 | [view1 mas_makeConstraints:^(MASConstraintMaker *make) { |
该属性简单理解为大标题,当设置为 YES 时,导航栏高度将变为:96px,正常情况下为:44px;
应该如果要设置该属性,则需要在实例 Vc 中去获取导航栏的高度。
如:
1 | self.navigationController.navigationBar.prefersLargeTitles = YES; |
UITableView莫名奇妙的偏移20pt或者64pt,
还有某些界面UITableView的sectionHeader、sectionFooter高度与设置不符的问题。
在iOS11中如果不实现
1 | - tableView: viewForHeaderInSection: |
则
1 | - tableView: heightForHeaderInSection: |
不会被调用,导致它们都变成了默认高度。
这是因为tableView在iOS11默认使用Self-Sizing,UITableView的estimatedRowHeight、estimatedSectionHeaderHeight、 estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension。
解决办法:
实现对应的方法
三个属性设为0。
用于声明属性,自动实现属性的读写方法。
原子性、读写权限、内存管理语义、方法名、其他。
atomic -默认
占用部分资源、效率一般、线程安全
nonatomic
非原子、效率高、线程不安全
readwrite -默认
读写
readonly
只读
MRC时,有assign、retain、copy,ARC加入了strong、weak
assign -值类型默认
简单赋值、用于值类型,如CGFloat、NSInteger等
strong (同retain -MRC) -引用类型默认
强引用、用于引用类型
赋值时,保留新值,新值引用计数+1,释放旧值(引用计数-1)。
用于所有的实例变量和局部变量、其他常规对象引用。
注意:可变对象应该使用strong,如NSMultiString
copy
复制、用于引用类型
赋值时,拷贝新值(新对象引用计数为1),释放旧值(引用计数-1),不改变新值(引用计数不变)。
copy的本质为复制该内存所存储的内容,重新创建一个对象赋给其相同的内容,对于实现了NSCopying协议的对象有效。
用于不可变对象:NSString、block、NSArray、NSDictionary等
注意:用于可变对象时,设置值后,变为不可变对象
weak
弱引用、用于引用类型
赋值时、单纯的引用新对象地址,不改变新对象(引用计数不变),不改变旧对象(引用计数不变)
当引用对象释放后,其值置为nil
__unsafe_unretained
类似assign、适用于引用类型、不安全的弱引用
功能类似于weak、对象摧毁后,不置nil、不安全,可用weak代替
getter=
1
2 > @property (nonatomic, getter=isOn) BOOL on;
>
setter=
1
2 > @property (nonatomic, setter=setOnState) BOOL on;
>
nonnull, null_resettable, nullable
将常用的命令做成脚本,添加到 terminal 会大大提高效率。
建立 xxx.sh 文件,内容为命令,如
1 | ## 添加 spring boot 默认目录 |
查看bash文件
1 | echo $SHELL |
有可能是 ~/.bash_profile、~/.zshrc等,我的是zsh,因此应该添加到~/.zshrc
1 | open ~/.zshrc |
添加快捷命令,保存文件
alias mkspdir=’.sh文件路径’
重启 terminal,或者更新源
1 | source ~/.zshrc |
此时即可使用快捷命令执行脚本了。
1 | ##命令登录ssh 用户名@ip |