Ios Swift结构中字符串和NSString之间的差异 我一直在阅读Apple开发人员文档,字符串是一个值类型,NString基金会是一个引用类型,类似Strutt是一个值类型,但是如果我在NString中使用NString,它的工作方式就像一个字符串。你能详细说明一下区别吗
例如:Ios Swift结构中字符串和NSString之间的差异 我一直在阅读Apple开发人员文档,字符串是一个值类型,NString基金会是一个引用类型,类似Strutt是一个值类型,但是如果我在NString中使用NString,它的工作方式就像一个字符串。你能详细说明一下区别吗,ios,swift,Ios,Swift,例如: struct testing { static var testingstring1 = NSString() static var testingstring2 = String() } Swift可与Objective-C互操作,并将某些Objective-C类型转换为Swift类型 可以在Obj-C和Swift之间转换的类型称为桥接类型。String和NSString是此类桥接类型的示例,因此您可以将NSString分配给字符串变量。字符串NSString不
struct testing {
static var testingstring1 = NSString()
static var testingstring2 = String()
}
Swift可与Objective-C互操作,并将某些Objective-C类型转换为Swift类型 可以在Obj-C和Swift之间转换的类型称为桥接类型。String和NSString是此类桥接类型的示例,因此您可以将NSString分配给字符串变量。字符串NSString不匹配: NSString概念涉及UTF-16代码点。每种方法都有其优点。与Swift相比,NSString方法具有更高的速度和效率,Swift必须遍历字符串以研究字符的构造方式;但是快速的方式给出了你直觉上认为是正确的答案。为了强调这一区别,非文字Swift字符串没有长度属性;它与NSString长度的相似性是其utf16属性的计数。 幸运的是,元素不匹配在实践中并不经常出现;但它可能会出现。下面是一个很好的测试用例:
let s = "Ha\u{030A}kon"
print(s.characters.count) // 5
let length = (s as NSString).length // or: s.utf16.count
print(length) // 6
我们已经使用Unicode码点创建了我们的字符串挪威名字Håkon,该码点与前面的码点组合,形成一个上面有一个环的字符。Swift遍历整个字符串,因此它规范化组合并报告五个字符。Cocoa一眼就看出该字符串包含六个16位代码点。我认为问题在于,当您初始化NSString时,Swift会自动将其更改为字符串。尝试像这样初始化NSString,看看是否会出现编译错误:
var testingstring1: NSString = "testingstring1" as NSString
下面从Objective-C的引用类型和Swift的值类型两个方面解释了这两种语言之间的联系:字符串是一种结构
//在Swift模块中
公共结构字符串
{
}
NSString是一个类
//在基础模块
打开类NSString:NSObject {}NSString是class,String是struct的可能重复项NSString是class,String是struct,我理解,但NSString是引用类型,它是如何在结构中工作的。嗨,Tj3n..这不是一个重复的问题。请理解我的问题。我没有问结构和类之间的区别。我问的是结构中数据类型声明之间的区别。