-
Target->Build Phases->Link Binary With Libraries
001.png
Link Binary With Libraries列出了工程所需要链接的.framework动态库和.a静态库
对于链接的系统动态库而言,由于ios的系统是在不断的升级中,必然会引入不少新功能和新API,而大多数都是会以.framework的方式提供给开发者
如果开发者使用了这些新引入的.framework,那么因为app的用户的系统版本不是统一的,所以用户机器上不一定都存在该动态库,此时就应该把链接的这些新的.framework改成Optional的,然后在程序代码中去动态判断用户版本,来启动对应的新功能
如果不修改成Optional而保持Required的话,在部分不存在该动态库用户的机器上,就会导致app一启动就退出,因为找不到对应的动态库
- 在StoryBoard上使用UIScrollView
先设置ScrollView的约束
往scrollview上添加一个视图 UIView,给View添加约束
003.png
上下滑动的设置Horizontally in Container 水平滑动的设置Vertically in Container
004.png
两张图上的约束都设置完了约束都显示黄色了再更新frame,不用着急!给scrollview和上面的试图配点颜色,最后效果
005.png
UIView的高度(水平滑动设置宽度)一定要设置,在IB界面上scrollview的contenSize是通过其上视图的尺寸决定的,要布局控件可以先在上面添加一个UIView,然后在View上添加视图。
- 原子和非原子属性
atomic:原子属性,为setter方法加锁,默认,消耗大量资源
nonatomic:非原子属性,不会为setter方法加锁,多个线程同时调用会产生错误,所以不要在子线程访问setter方法 - instancetype和id
相同点:作为方法的返回类型
不同点:
1、instancetype 可以返回和方法所在类相同类型的对象,在编译期就可以确定返回类型,帮助编译器更好定位代码问题。id在编译期只能返回未知类型的对象,运行时才能确定真正返回的对象类型。
2、instancetype只能作为返回值,id除了返回值还可以作为参数.
网友评论