【问题标题】:How mainBundle() return on object in swift or objective-c?mainBundle()如何在swift或objective-c中返回对象?
【发布时间】:2015-09-11 20:56:25
【问题描述】:

我正在看一本关于IOS开发的书。当我阅读此行let bundle = NSBundle.mainBundle() 时,我遇到了一个问题。书上说

这个调用返回一个 代表我们的应用程序的 bundle 对象。

我知道,在 swift 中,一个对象被创建为 let objname = classname() 。请问let bundle = NSBundle.mainBundle()是如何创建对象的?

【问题讨论】:

标签: objective-c swift nsbundle mainbundle


【解决方案1】:

每个返回对象的方法都可以返回对新对象的引用或对现有对象的引用。怎么能禁止其中一种选择呢?不知道实现怎么能这么说呢?

只需接受返回的对象。时期。

【讨论】:

    【解决方案2】:

    此调用不会创建(实例化)新对象。它在NSBundle 类上调用mainBundle 类方法,该方法返回一个单例,即应用程序的主包。

    类似的调用(在 obj-C 中,但在 Swift 中很容易翻译):

    • [UIApplication sharedApplication]
    • [NSNotificationCenter defautCenter]

    【讨论】:

    • 因此在第一次调用时创建了一个对象:单例对象。然而,人们不应该关心这一点。
    • bundle 对象是在哪里创建的? @Cyrille
    • 它是由 Objective-C 运行时和 iOS 创建的,作为启动应用程序的一部分,以及 UIApplication 共享实例。你完全无法控制它,也不需要担心、知道或关心它的来源。最小责任原则。
    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多