首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从另一个类访问变量会得到0 swift

在Swift中,如果从另一个类访问变量,会得到默认值0。这是因为Swift中的实例变量(属性)在被声明时会自动初始化为其对应类型的默认值。对于整数类型,其默认值为0。

然而,要注意的是,如果变量被声明为可选类型(Optional),则默认值为nil,而不是0。可选类型是Swift中的一种特殊类型,表示变量可以存储一个值,也可以存储nil(即空值)。

以下是一个示例代码,演示了从另一个类访问变量得到0的情况:

代码语言:txt
复制
class MyClass {
    var myVariable: Int // 未初始化的实例变量
    
    init() {
        myVariable = 10 // 在初始化方法中为实例变量赋值
    }
}

class AnotherClass {
    var anotherVariable: Int
    
    init() {
        let myClassInstance = MyClass()
        anotherVariable = myClassInstance.myVariable // 从另一个类访问变量
    }
}

let anotherClassInstance = AnotherClass()
print(anotherClassInstance.anotherVariable) // 输出:10

在上述代码中,MyClass类中的myVariable变量未初始化,因此其默认值为0。然后,在AnotherClass类的初始化方法中,创建了一个MyClass的实例,并通过该实例访问了myVariable变量。由于myVariable的默认值为0,因此anotherVariable被赋值为0。

需要注意的是,这里的答案并没有提及腾讯云相关产品和产品介绍链接地址,因为题目要求不能提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS 面试策略之语言工具-Swift

无论哪个角度讲,Swift 都将取代 Objective-C,成为 iOS 开发的主流语言。 所以在面试中,我们会看到关于 Swift 的问题越来越多。...其修饰的和方法可以在任意 Module 中被访问和重写;它是 Swift 3 中新添加的访问权限。 Public 的权限仅次于 Open。...继续访问该对象,程序会得到 nil,不会崩溃。 unowned 与弱引用本质上一样。唯一不同的是,对象在释放后,依然有一个无效的引用指向对象,它不是 Optional 也不指向 nil。...(class)中不存在这个问题,因为可以随意修改自己的成员变量。 10....程序员想了一想,又定义了另一个方法: func addFour(_ num: Int) -> Int { return num + 4 } 这时面试官问,假如我要实现返回 + 6, + 8 的操作呢

1.4K10
  • iOS工程师必看的 20 道 面试题

    其修饰的对象引用计数增加1。该对象只要引用计数不为0则不会被销毁。当然强行将其设为nil可以销毁它。 weak表示指向但不拥有该对象。其修饰的对象引用计数不会增加。...请说明并比较以下关键词:atomatic, nonatomic atomic修饰的对象保证setter和getter的完整性,任何线程对其访问都可以得到一个完整的初始化后的对象。...解决方法是将Father中的Son对象属性strong改为weak。...其修饰的和方法可以在任意 Module 中被访问和重写;它是 Swift 3 中新添加的访问权限。 Public 的权限仅次于 Open。...继续访问该对象,程序会得到 nil,不亏崩溃 unowned 与弱引用本质上一样。唯一不同的是,对象在释放后,依然有一个无效的引用指向对象,它不是 Optional 也不指向 nil。

    3.8K40

    Swift学习总结

    1、var 声明变量,let 声明常量,变量根据上下文识别类型。...$0表示第一个参数,$1表示第二个参数。 尾部闭包语法甚至可以省略掉方法的圆括号。 闭包和函数能记录在其闭合作用域中定义的变量所封装的内部信息。 闭包是引用类型。...swift增加一个惰性存储属性概念,用lazy关键字修饰,惰性储存属性的值只在第一次访问的时候才会出现,因为它依赖类型的外部因素,必须要满足某些前提条件才能计算得到。...计算属性与方法很类似,区别是一个用关键字var,另一个用func,计算属性没有圆括号。 计算属性如果没有写入方法,可以省略定义中的get。 子类要重载计算属性,同样要标记override。...private:访问级别所修饰的属性或者方法只能在当前访问.(注意:Swift4 中,extension 里也可以访问 private 的属性。)

    3K20

    17.Swift学习之类

    的介绍和定义 Swift虽然推荐面向协议编程,但其也是一门面向对象开发的语言 面向对象的基础是,产生了对象 在Swift中如何定义呢?...有时候找出两个常量或者变量是否引用自同一个实例非常有用,Swift提供了两个特点运算符来检查两个常量或者变量是否引用相同的实例。 相同于 ( ===) 不相同于( !...alsoTenEighty { print("tenEighty and alsoTenEighty refer to the same VideoMode instance.") } 继承 一个可以另一个继承方法...当一个另一个继承的时,继承的就是子类,被继承的就是父 定义一个父 class Vehicle { var currentSpeed = 0.0 var description...、类型方法、实例属性,类型属性进行覆盖 重写需要在前面加上 override 关键字 override 关键字执行时Swift 编译器检查重写的的父(或者父的父)是否有与之匹配的声明来提供重写

    61130

    Swift基础 访问控制

    翻译自:https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html 访问控制限制其他源文件和模块中的代码访问部分代码。...协议可以限制在特定上下文中,全局常量、变量和函数也是如此。 除了提供不同级别的访问控制外,Swift还通过为典型场景提供默认访问级别来减少指定显式访问控制级别的需求。...访问级别的指导原则 Swift中的访问级别遵循一个总体指导原则:任何实体都不能用另一个访问级别较低(限制性更强)的实体来定义。...常量、变量、属性和下标的获取者和设置器自动接收与他们所属的常量、变量、属性或下标相同的访问级别。...默认初始化器 如默认初始化器所述,Swift自动提供默认初始化器,没有任何结构或基的参数,这些结构或基为其所有属性提供默认值,并且本身也不提供至少一个初始化器。

    15200

    iOS面试题-Swift

    ) 在 Swift 中,可选型是为了表达一个变量为空的情况,当一个变量为空,他的值就是 nil 在类型名称后面加个问号?...: 高级别的变量不允许被定义为低级别变量的成员变量,比如一个 private 的 class 内部允许包含 public的 String值,反之低级变量可以定义在高级别变量中; open: 具备最高访问权限...), 试图在实例销毁后访问无主引用,产生运行时错误(野指针)如何理解copy-on-write?...Swift中跟实例对象相关的属性可以分为2大 存储属性(Stored Property) 类似于成员变量这个概念 存储在实例对象的内存中 结构体、可以定义存储属性 枚举不可以定义存储属性 计算属性(...初始化器的相互调用规则 指定初始化器必须它的直系父调用指定初始化器 便捷初始化器必须相同的里调用另一个初始化器 便捷初始化器最终必须调用一个指定初始化器什么可选链?

    3.6K40

    窥探Swift之别具一格的Struct和Class

    我们声明完变量,并分配内存空间后,我们对x, y的值进行打印可以看到x, y的初始值为0。具体如下所示: ?     ...我们可以调用访问权限为读写的setMyPoint()方法来改变结构体变量中属性的值,下方就是把坐标(10.0,20.0)赋值给myPoint变量,具体如下所示。 ?     ...2.对象的赋值与比较     在Swift中也是允许把一个变量的值通过赋值运算符(=)来赋值给另一个变量的。不过有一点要搞明白,如果类变量a的值赋值被变量b,那么变量a和b就指向同一块内存区域。...下方我们创建一个名为Money的,在Money中有两个属性,一个是存储属性(普通属性)名为CNY(代表着人民币), 另一个是名为USD的计算属性(代表美元)。...下方MyTestClass中定义了一个实例方法和一个方法,并且给出了调用方式,如下所示: image.png     今天博客的内容就先到这儿,下篇博客涉及一些的继承和中的方法和属性的访问权限等其他一些关于的东西

    1K70

    Swift5.0的Runtime机制浅析

    导读:你想知道Swift内部对象是如何创建的吗?方法以及函数调用又是如何实现的吗?成员变量访问以及对象内存布局又是怎样的吗?这些问题都会在这篇文章中得到解答。...对于后者来说如果在定义时没有指定基则默认SwiftObject派生。SwiftObject是一个隐藏的基,不会在源代码中体现。 Swift对象的内存布局和OC对象的内存布局相似。...这个函数的指针保存在swift描述信息结构体中,以便swift_release函数内部能够访问得到。...方法调用和结构图 Swift中成员变量访问 虽然说OCSwift的对象内存布局非常相似,每个对象实例的开始部分都是一个isa数据成员指向的描述信息,而中定义的属性或者变量则一般根据定义的顺序依次排列在...在每个OC的get和set两个属性方法的实现中,对于属性在中的偏移量值的获取都是通过硬编码来完成,也就是说是在编译链接时刻决定的。 对于Swift来说,对成员变量访问得到更加的简化。

    2.3K21

    Swift开发规范-修订版

    前言 《Swift开发规范》发布之后得到了很多Swifter的关注,很多读者提议最好为每条规约添加一些代码示例,其实在发布之前,我就考虑到要加代码示例这件事,但是后来还是因为偷懒没加。...【推荐】尽可能利用访问限制修饰符控制、方法等的访问限制,遵循开闭原则;说明:如确定某方法或变量不应该被外部调用,就使用private进行修饰,编译程序阻止外部不合适的调用。...同时private在 Swift 中会被隐式加上final修饰,从而得到优化。...⌥ ⌘ /自动生成文档模板; 【强制】将注释放在代码上一行,而不是放在代码后;说明:放在代码后有两个弊端,一是当代码稍微长一点后,注释可能需要横向滚动后才能看全;另一个弊端是,当代码修改,极易将注释删除...} /// 移除所有子View public func removeAllSubview() { subviews.forEach { $0.

    1.7K50

    Swift vs. Kotlin 漫谈系列之类与继承

    Swift 里面如果不想让一个能被继承,可以在声明时加上 final 关键字。另外如果两个分辨属于不同的模块,基必须用 open 关键字修饰才能被另一个模块的继承。...在 Kotlin 中,如果一个它的直接超继承相同成员的多个实现(由于接口函数可以有实现),它必须覆盖这个成员并提供其自己的实现。...对于 Optional 类型的成员变量,如果没有显式地初始化,编译器自动把它初始化为 nil。对于非 Optional 类型的成员变量,必须显式地初始化。...PS: Swift3 提供了五个访问控制的关键字 open``public private fileprivate internal 用来控制访问级别,internal表示在模块内部可以完全访问,在模块外部不行...Kotlin 漫谈》系列 《Swift vs. Kotlin 漫谈》系列之变量定义 《Swift vs. Kotlin 漫谈》系列之函数定义 《Swift vs.

    3.7K40

    升级和游戏音效 如何在场景和声音效果之间切换

    在本节中,我们将学习如何场景更改为另一个场景。此外,让我们实现任何游戏所需的功能:声音效果。...继承 我们将使用继承的概念,而不是将GameScene.swift中的代码复制到新的swift文件中。可以另一个继承方法,属性和其他特性。...我们将GameScene设置为父级并创建多个swift文件。新的swift文件将是孩子们,他们将继承GameScene的方法。有关更多信息,请访问Apple网站的页面。 游戏结束 首先,让我们开始吧!...以这种方式播放每种声音更容易。 声音文件 首先创建一个新的swift文件并命名为:Sound。...结论 在本节中,我们学习了子类如何继承,如何场景更改为另一个场景,创建新场景以及在游戏中添加声音效果。 原文: https://designcode.io/spritekit-sound

    1.7K30

    Actors

    例如,如果我们想把存款存到账户account,我们可以在另一个 actor 中调用deposit(amount:),在另一个 actor 中,该调用变成一条消息存在它的邮箱里,并且调用方挂起。...此外,如果需要同时更新两个属性来维护一个不变量,则异步设置属性可能更容易无意中破坏不变量模块外引用,必须 actor 外部异步引用不可变 let 声明。...如果上一节例子中使用非重入actor, 例子中函数执行得到预期结果。因为在friend.tell完成之前,此时不会调度 actor 中其他任务。...要同步访问 actor-isolated 函数,必须另一个 actor-isolated 函数中调用该函数。...actor 继承在 Swift 语言中所采用的形式本方案及其实现的先前迭代中都非常易于理解,因此后续重新引入该特性。

    1.3K51

    【读书笔记】The Swift Programming Language (Swift 4.0.3)

    素材:Language Guide 初次接触 Swift,建议先看下 A Swift Tour,否则思维转换很费力,容易卡死或钻牛角尖。 同样是每一章只总结3个自己认为最重要的点。这样挺好!...比 js 的 || 好使多了,因为前者能准确区分零值和nil值.只有nil值时,才需要使用默认值. * names[0.. 本质上,应该是 array 的[]操作符...Properties * lazy 关键字实现的属性懒加载,果然比重写 getter 方法,要清晰简洁好多啊. * 可以用 static 或 class 声明变量/方法; 用class 声明的变量方法...;deisingnated init 中,是不允许调用同级的另一个deisingnated init;子类中,只允许调用父的 designated init. * 调用父初始化方法前,子类自有的 stored.... * 子类的访问级别不能比父更宽松;但是子类可以通过重写机制,使父的成员的访问级别变的更宽松.

    1.5K100

    Swift4语法新特性 原

    其实并非如此,独占内存访问权限特性是一种编译时和运行时的安全特性,其和数组也没有任何关系,当两个变量访问同一块内存时,产生独占内存访问限制。    ...Swift4中则引入了独占内存访问权限的特性,如果复合如下3个条件,则程序产生读写权限冲突: 1.至少有一个变量在使用写权限。 2.变量访问的是同一个内存地址。 3.持续时间有重叠。    ...在函数中,inout参数声明开始到函数的结束,这个变量始终开启着写权限,对应上面代码,number参数开启这写权限,stepSize则进行了读访问,如此则满足上面的权限冲突规则,产生读写冲突。...array = ["1","2","3"] for item in array[0...]{ print(item) } 五、下标方法支持泛型     subscript方法可以为Swift中的添加下标访问的支持...5.的初始化检查策略,的定义上保证安全。 6.删除++与--运算符,删除常规for循环,习惯上保证安全。

    1.7K30

    swift4.0语法杂记(精简版)

    let a = 10 let b = 12.5 print(a + Int(b)) 此时得到的结果就是22。在swift中,做类型转换时是将数据括起来,相当于swift结构体中的构造函数。 ?...它将变量赋值给一个临时变量,在这个操作中会做两步操作:首先判断变量是否有值,如果没有值,则直接不执行大括号里面的内容;如果有值,系统自动将变量进行解包,并且将解包后的结果,赋值给临时变量。...通过名进行访问。...static var courseCount : Int = 0外通过访问类属性 Person.courseCount = 2 6、的构造函数 构造函数类似于OC中的init方法。...若一个拥有很多父让开发者很难找到每个中的问题并进行修改。 对象引用到内存的同一地方,若是发生改变,可能造成代码混乱的现象。 而swift是一种面向协议的语言。

    15.4K90

    Swift 发布路线图:更便捷、更高效且更安全

    通常,当 self 为 nil 时,此类函数立即返回,由于可能跳过了任意数量的代码,因此更难推理其正确性。 因此,这里展示的模式是很好,但是在 Swift 中表达它们丢失重要的结构并产生问题。...你可以使用一个属性将和函数标记为与该 actor 绑定。编译器将允许你任何地方引用这个,但是要实际调用这个方法,你需要位于 UI actor 上。...原则上,任何地方的任何代码都可以访问全局内存(例如全局变量或静态变量),因此会受到数据争用的影响。 也可以保存有对该类引用的任何代码中访问组件内存。...用户将能够使用全局 actor 来保护全局变量,并将成员转换为 actor 来保护它们。需要访问特定队列的框架可以定义全局 actor 及其默认协议。...当前的默认行为:全局变量组件内存不受数据争用的影响。

    78620

    Swift 6 的时代来临了!苹果:它是超越 C++ 的最佳选择

    Swift 5.5 具有以下改进,例如使用 async/await 机制和参与者更好地支持并发。参与者是一种类似于的引用类型,但与不同的是,它们一次只允许一个任务访问它们的可变状态。...但在 Swift 6 之后,这条警告将不再出现:Swift 现在能够正确检测到代码实际上并无问题,因为用户不会同时两个或更多位置进行访问。编译器可以分析程序流程并意识到这种编写方式安全可行。...这些都是很常规的 Swift 代码,但其中令人头痛的问题在于:打包器库通常并不想透露自己内部依赖库的工作机制,可主应用还会被授予交易库访问 BankTransaction 结构的权限。... 6.0 版本开始,可以通过在交易导入上使用访问控制来解决这个问题:通过在银行业务库中使用 internal import Transactions 或者类似的方法,Swift 即可拒绝构建任何声明为公共...但由于泛型参数自动符合 Copyable,所以我们必须使用~Copyable 明确选择退出。 同样的,此项变更意味着不可复制类型现在也可以符合协议,但前提是将这些协议也标记为~Copyable。

    22710
    领券