Warum ich Interface Builder nicht verwende – Sam Soffes

Warum ich Interface Builder nicht verwende – Sam Soffes


Gepostet am

Für die iOS-Entwicklung verwende ich Interface Builder nicht. Ich habe seit iOS 2.0 nicht mehr absichtlich eine NIB verwendet (wenn ich NIB sage, meine ich die Interface Builder-Datei, nicht das spezifische Format). In der Vergangenheit habe ich mit einigen Leuten zusammengearbeitet, denen die Verwendung von Interface Builder sehr gut gefallen hat. Das ist ein Streit, den ich immer wieder hatte.

Anstatt gedankenlos über die eine oder andere Seite zu streiten, gehe ich hier auf Punkte ein, wenn ich versuche, jemanden für mich zu gewinnen.

Explizit statt implizit wählen

Die Entscheidung, explizit zu sein, ist für mich der Hauptgrund, Dinge stattdessen im Code zu erledigen. Wenn jemand, der neu im Team ist, eine Ansicht oder einen Ansichtscontroller öffnet, kann er sofort sehen, wo sich alles befindet, und muss sich nicht fragen, ob diese Datei eine NIB hat.

Ich habe unzählige Stunden damit verbracht, nach der Ursache eines Fehlers zu suchen, nur um herauszufinden, dass es sich um ein Kontrollkästchen in einem der halben Dutzend Inspektoren im Interface Builder handelt. Wenn es sich um einen Code handelte, ist es einfach, einen Blick auf den Ansichtscode zu werfen und die Ursache des Problems viel schneller zu erkennen.

Enge Kopplung

Es ist viel schwieriger, Interface Builder für wiederverwendbare Ansichten zu verwenden. Ich erstelle ständig kleine Ansichten und verwende sie überall wieder. Das ist sozusagen der Sinn der Arbeit in einer objektorientierten Umgebung. Wenn Sie Interface Builder verwenden und über Steckdosen verfügen und bei der zweiten Verwendung vergessen, die Steckdose anzuschließen, kommt es zur Laufzeit zum Absturz. Das ist schrecklich. Dies führt zu einer völlig neuen Klasse von Fehlern.

Jetzt haben wir dieses Ding, das einfach abstürzt, weil wir Interface Builder statt Code verwenden. Wenn es im Code genau dasselbe wäre, würde es nicht abstürzen. Schlimmer noch: Der Compiler kann dies für Sie überprüfen.

Ganz zu schweigen davon, dass Ihre NIBs nur ein Haufen unsichtbarer Kästchen sind, wenn Sie viele benutzerdefinierte Ansichten verwenden. Jetzt haben Sie also diese enge Kopplung, die noch schwieriger zu handhaben ist, wenn Sie sie nur im Code auslegen würden.

Haben Sie jemals auf einen Code gestarrt und sich gefragt, warum er nicht funktioniert, und dann festgestellt, dass Sie die Steckdose oder Aktion nicht angeschlossen haben? Ich hasse das.

Mit anderen zusammenarbeiten

Hatten Sie jemals einen Zusammenführungskonflikt in einer NIB? Es ist das Schlimmste. (Zugegeben, das XIB-Format hat geholfen, aber es ist jetzt einfach schrecklich statt unmöglich.) Wenn Sie an einer großen Anwendung mit mehreren Entwicklern arbeiten, werden Sie enorm viel Zeit damit verschwenden, sich mit diesem Problem zu befassen.

Das Schlimmste daran ist, dass Sie es möglicherweise erst zur Laufzeit bemerken, wenn es automatisch falsch zusammengeführt wird. Mit Code können Sie den Unterschied lesen und verstehen, was passiert. NIBs (in beiden Formaten) sind nicht für Menschen lesbar. Dadurch ist es auch nutzlos, den Verlauf einer Datei einzusehen. Wenn es Code war, ist es nur Objective-C. Darin sind wir gut.

Es ist Teil von Xcode

Früher war das ein größeres Problem, aber ich denke, es ist immer noch erwähnenswert. Um es vorsichtig auszudrücken: Xcode ist nicht die stabilste Software der Welt. Der Textbearbeitungsteil funktioniert ziemlich gut. Jedes Mal, wenn beim Bearbeiten einer NIB ein Absturz auftritt, grummele ich vor mich hin und wünschte, es wäre noch mehr Code.

Je seltener ich Xcode für mehr als alles andere außer einem Texteditor mit Vervollständigung und einem Compiler verwenden muss, desto glücklicher bin ich.

Standort, Standort, Standort

Der Layoutcode ist nicht schwer. Auto-Layout ist etwas mehr Code als herkömmliches Layout, aber es ist immer noch nicht schlecht. Der Versuch, im Interface Builder mit dem automatischen Layout zu arbeiten, ist wahnsinnig. Das Festlegen von Steckdosen zur Steuerung integrierter Einschränkungen ist einfach nur Albernheit.

Es ist so einfach, es einfach zu überschreiben layoutSubviews und mach dein Ding. Persönlich finde ich es für die meisten Dinge viel einfacher, damit zu arbeiten als das automatische Layout.

Ich denke, die größte Angst vieler Menschen besteht darin, mit Layouts im Code zu arbeiten. Sobald man den Dreh raus hat, ist es ganz einfach. Die universelle Gestaltung Ihrer App wird viel trivialer als die Erstellung separater NIBs für iPhone und iPad. Sie können Ihren Code einfach wiederverwenden, anstatt diese enge Kopplung zu erstellen.

Fazit

Interface Builder selbst ist nicht schlecht. Es fördert schlechte Praktiken, verhindert die Wiederverwendbarkeit, erschwert die Zusammenarbeit mit anderen und verlangsamt Ihren Arbeitsablauf. Persönlich vermeide ich die Verwendung von Interface Builder (einschließlich Storyboards) so weit wie möglich. Alle Projekte, an denen ich seit 2009 gearbeitet habe, hatten keine NIBs, es sei denn, es lag außerhalb meiner Kontrolle.

Ich denke, Sie sollten sich etwas Zeit sparen, ein paar Dinge lernen und mit dem Umstieg auf Code beginnen. Wir sind schließlich Programmierer.

Aktualisieren: Ganz zu schweigen von der Lokalisierung. Es ist ein großer Schmerz mit IB. Am Ende stellt man Verbindungen zu allem her. So viel einfacher im Code.



Source link

Postagens Similares

  • 病毒式停车场视频显示,一名女子撞了一辆购物车,然后攻击另一名女子——观众对事情的起因无法达成一致

    X 上疯传的一段视频显示,在一个身份不明的停车场发生了肢体冲突。视频中,一名女子驾驶着自己的 SUV 撞上一辆购物车,然后下车冲向附近的人。这段视频在 X 上引起了不同的反应,一些人质疑是什么引发了这场冲突。 X 账户@RickD_GK 分享了这段视频,并在标题中写道“她需要愤怒管理”,并暗示如果没有这名男子介入,情况可能会更糟。 他们还指出,如果不是这名男子(他是路怒者差点撞到的人之一)“干预”,考虑到从车里走出来的女士冲向她的方式,另一名女子的情况可能会更糟。 这位女士用自己的车撞了一辆大车,她向人们发怒。然后继续追击那位女士…… 如果不是那个家伙插手的话,恐怕事情会更糟…… 她需要愤怒管理…… pic.twitter.com/MEyieG9nOc — 里克·D (@RickD_GK) 2026 年 6 月 1 日 “她到底为什么要径直朝他们开过来?”一位评论者问道。这句话加起来,就像在视频中一样,我们看到这位女士撞上了该男子的车,因为他刚刚转向保护另一位女士。 这对男女看上去很陌生——尽管如此,当SUV靠近时,他还是上前挡住了她。随后,司机追赶该女子,该男子短暂试图干预,然后退到一边。 然而,一些评论者对这种不稳定的行为提出了理论。其中一位写道:“我想知道那个穿蓝衣服的女人是不是那个男人的情妇,而车里的那个人是他的妻子。这是她追赶那个穿蓝衣服的女人的唯一解释。”分享这段视频的账户回应道:“这是我想到的唯一合乎逻辑的答案。” 另一条评论则更为愤怒。 “美国的每一个凯伦和查德(男性版本)都必须受到极端的对待。他们想要变得强硬吗?向他们每个人展示什么是真正的强硬。不要走开,”他们写道。另一位网友总结道:“这些人都是无脑的。” 当我们开始进入周末时,我们必须采取一些疯狂的凯伦行动来帮助引领冲锋。凯伦的一大优点是她从不休息一天。 pic.twitter.com/ItXRXNKbkM — 咯咯笑的加农 (@GigglingGanon) 2026 年 5 月 29 日 当这名男子取回从车上掉下来的杂货时,他看到司机对另一名女子进行身体攻击,然后他上前阻止了这场对抗。 Source link

  • Кейп Джун – “Звукові дошки”

    «Sound Boards», описаний як «про невагомість вітання без тиску виконання», є ще одним захоплюючим треком від Кейп Джунембієнт-фолк дует Маріель Макс та Ліндсі Загороднєва. Минулого місяця ми привернули нашу увагу завдяки вражаючій пісні “The Breakers”, Cape June знову досягли карколомного звучання з плаксивими струнами та пишною акустикою, що доповнювала ліричні пошуки емоційного спокою: “Я знайшов…

  • Pekerjaan Sampingan untuk Ibu Rumah Tangga (Diurutkan berdasarkan Gaji Per Jam)

    Mari kita perjelas: menjadi ibu rumah tangga sudah merupakan pekerjaan penuh waktu. Jika Anda ingin mendapatkan penghasilan tambahan, sumber daya Anda yang paling terbatas bukanlah motivasi—tetapi waktu. Ketika Anda hanya memiliki beberapa jam yang tersebar selama waktu tidur siang atau setelah anak-anak tidur, Anda tidak boleh membuang waktu untuk melakukan pekerjaan sampingan yang menghasilkan banyak…

  • Daniel Arison trasforma il colpo di frusta emotivo in qualcosa di profondamente personale in “Sad”

    Con le luci delle ambulanze lampeggianti e sentimenti irrisolti al centro, l’ultima opera dell’artista Daniel Arison, con sede a Miami, “Sad” scava nello strano dolore di perdere qualcuno che non è mai stato così vicino. segui la nostra playlist delle canzoni di oggi Trasmissione in streaming: “Triste” – Daniel Arison DAniel Arison sta saltellando…

  • இன்ஸ்பிரோ வேர்ட்பிரஸ் தீம் பாதிப்பு 70,000 க்கும் மேற்பட்ட தளங்களை பாதிக்கிறது

    WPZOOM ஆல் இன்ஸ்பிரோ வேர்ட்பிரஸ் கருப்பொருளுக்காக ஒரு பாதிப்பு ஆலோசனை வெளியிடப்பட்டது. காணாமல் போன அல்லது தவறான பாதுகாப்பு சரிபார்ப்பு காரணமாக பாதிப்பு எழுகிறது, இது ஒரு குறுக்கு தள கோரிக்கை மோசடி (சிஎஸ்ஆர்எஃப்) தாக்குதலைத் தொடங்க அங்கீகரிக்கப்படாத தாக்குபவருக்கு உதவுகிறது. குறுக்கு தள கோரிக்கை மோசடி (சி.எஸ்.ஆர்.எஃப்) ஒரு வேர்ட்பிரஸ் தளத்தின் சூழலில் ஒரு சி.எஸ்.ஆர்.எஃப் பாதிப்பு என்பது ஒரு இணைப்பைக் கிளிக் செய்யும் நிர்வாக சலுகைகளைக் கொண்ட ஒரு பயனரை நம்பியிருக்கும் ஒரு தாக்குதலாகும்,…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *