美文网首页
踩坑历程(辛酸史)

踩坑历程(辛酸史)

作者: Codepgq | 来源:发表于2017-11-16 16:13 被阅读174次

所遇到的坑,不计其数,为避免再次掉进入同一个坑,特此记录,同时如果也有哪位遇到和我一样的情况,也可作参考。

2017年11月16日16:14:38

1、SVProgressHUD 在子线程show,有几率导致啥都不显示

image.png

如果出现以上情况,考虑是在子线程进行了show操作

后测试最新版,未发现此问题

2、KVC,V不能为nil

self setValue:<#(nullable id)#> forKey:<#(nonnull NSString *)#>

所以如果设置的变量作为value,要注意value不能为nil

3、子线程不宜多个

之前绘制过一个UI如图,初期认为绘制在子线程做,显示才到主线程,会比较好,实测时候,主线程会比开几个子线程去分别绘制快。


IMG_02F3727D121F-1.jpeg

2017年11月20日15:58:58

1、在封装SDK的使用要注意数据格式统一(特别是在Swift中使用的时候)

比如:Int uint_8 Int16

在OC中的SDK还要注意定义enum的时候
比如:
...enum (NSInteger,DDDType){
DDDTypeXX,//建议这种
ssdkfd,别写这种,不然你后很痛苦的
}

2、命名一定要规范化,一定,一定

如果你不想这样子,那么在最初一定要写好


image.png



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

相关文章

网友评论

      本文标题:踩坑历程(辛酸史)

      本文链接:https://www.haomeiwen.com/subject/qtalvxtx.html