在课堂上使用self访问属性/方法

时间:2018-02-08 14:36:56

标签: ios swift self

我正在浏览Firefox的开源iOS应用程序,并发现他们有时会在self的课程中访问属性,有些则没有。

我的猜测是它是一个样式选择,并且使用显式self清楚地表明它是一个类属性而不是局部变量。但情况并非如此,因为两种方法(w /和self)都被使用......

令我感到不安的相关代码位于AppDelegate.swift130136。财产tabManagerselfbrowserViewController没有分配,但两者都是同一类的一部分。

self.tabManager = TabManager(prefs: profile.prefs, imageStore: imageStore)
self.tabManager.stateDelegate = self

//[...]

browserViewController = BrowserViewController(profile: self.profile!, tabManager: self.tabManager)
browserViewController.edgesForExtendedLayout = []

由于我对iOS和Swift编程很陌生,如果有人能够澄清这是一种风格选择还是别的什么,我将不胜感激:)

1 个答案:

答案 0 :(得分:2)

  

我的猜测是它是一种风格选择,并且使用显式自我清楚地表明它是一个类属性而不是局部变量。

正确。如果未指定任何邮件收件人,则self是隐式邮件收件人,因此它相同。 self.tabManagertabManager在此上下文中是同义词(即没有局部变量tabManager,但有一个实例属性tabManager)。

  

但是这种情况不可能,因为两种方法(w /和w / o self)都被使用了......

那被称为"粗心大意" (或者可能"不一致")。在这种情况下不使用self没有任何惩罚,所以这个程序员有时候不会这样做。

正如我所说in my book,除了错误之外,我从不遗漏self。但错误确实发生了。即使我做了它们。