小知识点总结(二)

作者: 上帝也是码农 | 来源:发表于2016-08-21 20:00 被阅读35次

1、单例
OC

+(OCSingleton *)shareInstance{
    
    static OCSingleton *ocSingleton = nil;
    static dispatch_once_t once_Token;
    
    dispatch_once(&once_Token, ^{
        ocSingleton = [[self alloc]init];
    });
    return ocSingleton;
}

Siwft
1)在Swift里,你可以使用一个简单的static类型的属性来仅仅初始化一次,在多条线程同时访问时它可以保证只初始化一次。

class Singleton {
    static let sharedInstance = Singleton()
}

2)如果你想在初始化的时候执行额外的代码,你可以写成下面这种形式。

class Singleton {
    static let sharedInstance: Singleton = {
        let instance = Singleton()
        // setup code
        return instance
    }()
}

调用singleton

       let singleton1 = CustomSingleton.sharedInstance
        print(singleton1)
        
        let singleton2 = CustomSingleton.sharedInstance
        print(singleton2)

2、取消按钮高亮状态
adjustsImageWhenHighlighted此属性设为NO
3、KVO
1、KVO:Key-value observing键值观察者模式,当一个对象监听的对象的某一属性被改变的时候,该对象会自动被通知。这是一种解耦合的设计模式。
2、实现KVO的三个步骤(Swift)
tip:被监听的对象必须是NSObject的子类
被监听的属性前必须加dynamic修饰
因为 KVO 是基于KVC(Key-ValueCoding)以及动态派发技术实现的,而这些东西都是Objective-C运行时的概念。另外由于Swift为了效率,默认禁用了动态派发,因此想用Swift来实现KVO,我们还需要做额外的工作,那就是将想要观测的对象标记为 dynamic(该段为转载,原地址:http://swifter.tips/kvo/)

 dynamic var textStr = "gggg"

1)给被监听的对象添加观察者

kvoLabel.addObserver(self, forKeyPath: "textStr", options: .New, context: nil)

2)重写方法: observeValueForKeyPath:ofObject:change:context:

   override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
        print(kvoLabel.textStr)
        kvoLabel.text = kvoLabel.textStr
    }

3)移除observe

  deinit{
        kvoLabel.removeObserver(self, forKeyPath: "textStr")
    }

相关文章

  • 无标题文章

    综和复习本月知识点总结: 一:微信小程序 二:vue复习 三:js复习 四:新知识点 一:微信小程序知识点总结 开...

  • 小知识点总结(二)

    1、单例OC Siwft1)在Swift里,你可以使用一个简单的static类型的属性来仅仅初始化一次,在多条线程...

  • 2019-12-05 Login Button and Reco

    Salesforce小知识点总结:Enable the 'Administrators Can Login as ...

  • JavaScript小知识点总结(二)

    一、函数定义与调用 1.1、函数 如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefine...

  • webApI

    总结 :小知识点 其实我看懂了下面的英文:

  • android 常用小知识点 tips (二)

    android 常用小知识点 tips (一)android 常用小知识点 tips (二) 持续更新中.... ...

  • 小知识点总结

    1. Xcode 修改模板:在此路径中修改相应的模板 2. [!] Failed to connect to G...

  • 知识点小总结

    HTML部分 浏览器显示形式区分块级元素行内元素 元素特点区分替换元素非替换元素 H5新特性语义化元素 artic...

  • 小知识点总结

    最近看的东西比较杂,简要的对不太熟悉的东西做个记录,也对计算机基础知识做点回顾。 运算符 1.&*, &+, &-...

  • 小知识点总结

    小知识点总结 标签(空格分隔): 随笔 1.H5&C3新知识点 H5新标签 H5中新增了很多具有“语义化”的新标签...

网友评论

    本文标题:小知识点总结(二)

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