静态类型的 NSUserDefaults,使用了subscript下标

静态类型的 NSUserDefaults,使用了subscript下标

import UIKit

let keyPrefix =  "me.fin.V2EXSettings."

class V2EXSettings: NSObject {

static let sharedInstance = V2EXSettings()

fileprivate override init(){

super.init()

}

subscript(key:String) -> String? {

get {

return UserDefaults.standard.object(forKey: keyPrefix + key) as? String

}

set {

UserDefaults.standard.setValue(newValue, forKey: keyPrefix + key )

}

}

}

调用的地方:

fileprivate static let STYLE_KEY = "styleKey"

fileprivate override init(){

if let style = V2EXSettings.sharedInstance[V2EXColor.STYLE_KEY] {

self.style = style

}

else{

self.style = V2EXColor.V2EXColorStyleDefault

}

super.init()

}

时间: 2024-10-09 09:24:35

静态类型的 NSUserDefaults,使用了subscript下标的相关文章

Java中静态类型检查是如何进行的

以下内容来自维基百科,关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程: 动态类型检查:在程序运行期间验证类型安全的过程: Java使用静态类型检查在编译期间分析程序,确保没有类型错误.基本的思想是不要让类型错误在运行期间发生. 以下代码是一个例子,理解了他,你会更好的理解Java静态类型检查是如何工作的. 代码示例 假定我们有如下类,A和B,B继承A. class A { A me() { return this; } public void doA(

O-C相关-08-动态类型与静态类型

08-动态类型与静态类型 1, 什么是动态类型和静态类型 1) 动态语言 又叫动态编程语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化.比如众所周知的ECMAScript(JavaScript)便是一个动态语言.除此之外如Ruby.Python等也都属于动态语言,而C.C++等语言则不属于动态语言. 而其实我们平时说的"动态语言"应该指的是"动态类型语言".至少我之前一直是这么认为的. 2) 动态类型语言 在运行时确定类

静态类型检查与继承

类型检查(type checking)是指确认任一表达式的类型并保证各种语句符合类型的限制规则的过程.Java是静态类型检查的语言,但是仍然需要运行期类型检查,并抛出可能的运行时异常. Wiki: Static type-checking is the process of verifying the type safety of a program based on analysis of a program's source code. Dynamic type-checking is th

弱类型、强类型、动态类型、静态类型

装载: https://www.zhihu.com/question/19918532 弱类型: > "1"+2 '12' 强类型: >>> "1"+2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects

【Simple Java】Java中静态类型检查是如何进行的

以下内容来自维基百科,关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程: 动态类型检查:在程序运行期间验证类型安全的过程: Java使用静态类型检查在编译期间分析程序,确保没有类型错误.基本的思想是不要让类型错误在运行期间发生. 以下代码是一个例子,理解了他,你会更好的理解Java静态类型检查是如何工作的. 代码示例 假定我们有如下类,A和B,B继承A. class A { A me() { return this; } public void doA(

OC 动态类型和静态类型

多态 允许不同的类定义相同的方法 动态类型 程序直到执行时才能确定所属的类 静态类型 将一个变量定义为特定类的对象时,使用的是静态形态 将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就知道这个变量所属的类,这个变量总是存储特定类的对象.使用静态类型时,编译器尽可能的确保变量的用法在程序中始终保持一致,编译器能够通过检查来确定应用于对象的方法是由该类定义的或者由该类继承的,否则就会显示警告,静态类型能够更好地在程序编译阶段就指出错误.并且使用静态类型可以提高程序的可读性 简单来说:

【OC学习-16】动态VS静态类型识别?什么是动态绑定和动态加载?

动态VS静态 我们在实例化一个对象时,一般都是如下,就是静态类型: ASPerson * person=[[ASPerson alloc]init]; 还有一种是动态类型: id person=[[ASPerson alloc]init]; 可以看出来: (1)一般的带有明显类名(静态指针)的都是静态类型,而用id的通用指针的都是动态类型: (2)静态类型更容易阅读,更友好: (3)一般不涉及多态的时候,尽量用静态类型. 动态绑定和动态加载 这其实是针对类和对象说得,就是很多事情都不是事先弄好的

C++ 对象的静态类型与动态类型

在C++当中:因为出现了继承: 继承导致对象的指针和引用具有两种不同的类型: 静态类型 和 动态类型 . 静态类型 :指针或者是引用声明时的类型. 动态类型 :由他实际指向的类型确定. class Base { } class Derived:public Base { } Base* base //base的静态类型是 Base* = new Derived;//base的动态类型是 Derived* Derived* derived //derived的静态类型是 Derived* = ne

静态类型&amp;动态类型

何时使用:使用存在继承关系的类型时,必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来 静态类型:表达式的静态类型在编译时总是已知的,它是变量声明时的类型或表达式生成的类型 动态类型:动态类型直到运行时才可知,(变量或)表达式表示的内存中的对象的类型 如果表达式既不是引用也不是指针,则它的动态类型永远与静态类型一致. 如当print_total调用net_price时:double ret = item.net_price(n);,我们知道item的静态类型是Quote&,