Для Swift 2 или 3 (т. е. post-Swift 1.2) вы можете использовать:
class MySwiftClass: NSObject {
internal override class func initialize() {
DoStuff()
super.initialize()
}
}
Но, как вы можете видеть, ваш класс должен наследовать (прямо или косвенно) форму NSObject. Это необходимо, потому что initialize()
вызывается средой выполнения ObjC.
И метод initialize()
вызывается только при ссылке MySwiftClass
. Так что это не будет так магии, как load()
.
Но это также будет более безопасным. Например: включая фреймворк (скажем, просто добавив его к вашему Podfile
), не позволит таинственным образом начать вести себя, как только ваше приложение запустится, без необходимости добавлять одну строку кода к вашему project ( хотя бы ... Надеюсь!
Ваша разметка недействительна. a ul
может иметь только li
элементы в качестве своих непосредственных потомков. Кроме того, li
является недопустимым дочерним элементом p
. Тэги абзацев могут содержать только фразинг-контент , который не включает li
. Я предлагаю вам просмотреть следующий фрагмент, чтобы узнать, как изменяется ваш браузер, чтобы попытаться исправить ошибки разметки. По крайней мере, для хром он заканчивает разделение тега абзаца на два и размещение вложенных элементов li
на том же уровне, что и другие.
article ul ul :nth-child(2) {
border:1px solid black;
}
<article>
<ul>
<li>this not</li>
<li>this not</li>
<ul>
<li>this not</li>
<li>this</li>
<p>
<li>this not</li>
<li>why not this?</li>
</p>
</ul>
</ul>
</article>
Как уже упоминалось @Huangism, ваш HTML недопустим.
Из страницы MDN о ul
:
Допустимое содержимое: ноль или более
<li>
элементов, которые, в свою очередь, часто содержат вложенные<ol>
или<ul>
.Вот пример того, как ваш дом должен быть структурирован для его работы:
article ul ul :nth-child(2) { border: 1px solid black; }
<article> <ul> <li>this not</li> <li>this not</li> <li> <ul> <li>this not</li> <li>this</li> <li> <ul> <li>this not</li> <li>why not this?</li> </ul> </li> </ul> </li> </ul> </article>