所遇到的坑,不计其数,为避免再次掉进入同一个坑,特此记录,同时如果也有哪位遇到和我一样的情况,也可作参考。
2017年11月16日16:14:38
1、SVProgressHUD
在子线程show
,有几率导致啥都不显示
SVProgressHUD
在子线程show
,有几率导致啥都不显示如果出现以上情况,考虑是在子线程进行了show
操作
后测试最新版,未发现此问题
2、KVC,V不能为nil
self setValue:<#(nullable id)#> forKey:<#(nonnull NSString *)#>
所以如果设置的变量作为value,要注意value不能为nil
3、子线程不宜多个
之前绘制过一个UI如图,初期认为绘制在子线程做,显示才到主线程,会比较好,实测时候,主线程会比开几个子线程去分别绘制快。
2017年11月20日15:58:58
1、在封装SDK的使用要注意数据格式统一(特别是在Swift中使用的时候)
比如:Int uint_8 Int16
在OC中的SDK还要注意定义enum的时候
比如:
...enum (NSInteger,DDDType){
DDDTypeXX,//建议这种
ssdkfd,别写这种,不然你后很痛苦的
}
2、命名一定要规范化,一定,一定
如果你不想这样子,那么在最初一定要写好
2017年11月22日10:26:20
1、swift中
let touch = touches.first
let lastPoint = touch?.preciseLocation(in: touch?.view)
let currentPoint = touch?.location(in: touch?.view)
上面获取到的点是一样的,一样的,一样的……很奔溃
2017年11月30日
1、protocol 中定义了其它的struct
struct ss {
var name: String?
}
protocol ssss {
var s: ss? {get set}
}
这个时候在controller中继承改协议
class controller: UIViewController {
}
extension controller: ssss{
var s: ss?{
get{
return ss()
//这里不能写self.s
}
set{
}
}
}
但是如果你不想实现get set 方法
class controller: UIViewController, ssss {
var s:ss?
}
2017年12月07日11:39:44
1、Xcode 自动展开问题 NicWhite 提供
删除文件可以解决,文件路径如下:
MyProjectName.xcodeproj > project.xcworkspace > xcuserdata > myusername.xcuserdatad > UserInterfaceState.xcuserstate
myusername 用户名
2018年03月07日16:37:31
在把字符串转化为时间的时候,如果使用了国际化,那么获取时间也需要做处理
需要设置local
let dateformatter = DateFormatter()
dateformatter.locale = NSLocale(localeIdentifier: "XXXX")
...
否则可能会获取失败。
2018年03月21日16:14:04
在编写SwiftSDK的时候如果声明一个属性对外只读,对内可读写
/// 公开的对外只读、对内读写
public internal(set) var age: Int = 0
private(set) var age: Int = 0