You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# NYTimes Objective-C Style Guide
1
+
##NYTimes Objective-C Style Guide
2
2
3
3
This style guide outlines the coding conventions of the iOS team at The New York Times. We welcome your feedback in [issues](https://github.com/NYTimes/objetive-c-style-guide/issues), [pull requests](https://github.com/NYTimes/objetive-c-style-guide/pulls) and [tweets](https://twitter.com/nytimesmobile). Also, [we're hiring](http://jobs.nytco.com/job/New-York-iOS-Developer-Job-NY/2572221/).
Copy file name to clipboardExpand all lines: README_de-GER.md
+141Lines changed: 141 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -287,3 +287,144 @@ CGFloat y = frame.origin.y;
287
287
CGFloat width = frame.size.width;
288
288
CGFloat height = frame.size.height;
289
289
```
290
+
291
+
## Konstanten
292
+
293
+
Konstanten werden gegenüber in-line Zeichenketten oder Zahlen bevorzugt, da sie eine einfache Wiederverwendung von gemeinsam verwendeten Variablen erlauben. Zudem können sie einfach ersetzt werden, ohne sie zuvor mit Finde und Ersetze ausfindig gemacht zu haben. Konstanten sollten als `static` Konstanten und nicht als #define deklariert werden, so fern sie nicht explizit in Makros verwendet werden.
294
+
295
+
**Beispiel:**
296
+
297
+
```objc
298
+
staticNSString * const NYTAboutViewControllerCompanyName = @"The New York Times Company";
Bei der Verwendung von `enum`s wird empfohlen, von der neueren Typ-Spezifizierung Gebrauch zu machen, da eine stärkere Typ-Prüfung und Code Vervollständigung mit inbegriffen ist. Das SDK stellt nun ein Makro mit dem festgelegten Typen `NS_ENUM` zur Verfügung
314
+
315
+
**Beispiel:**
316
+
317
+
```objc
318
+
typedef NS_ENUM(NSInteger, NYTAdRequestState) {
319
+
NYTAdRequestStateInactive,
320
+
NYTAdRequestStateLoading
321
+
};
322
+
```
323
+
324
+
## Private Eigenschaften
325
+
326
+
Private Eigenschaften sollten in den Klassenerweiterungen der Implementationsdatei einer Klasse deklariert werden (Anonyme Kategorien).
Bilder sollten einheitlich benannt werden um der Verwirrung bei den Entwicklern und im Unternehmen vorzubeugen. Sie sollten als eine Camel-Case Zeichenkette benannt werden und ihr Name sollte auf ihre Verwendung aufmerksam machen. Darauf folgt der Name (ohne Präfix) der Klasse oder der Eigenschaft, die sie anpassen (wenn sie das überhaupt tun). Darauf folgt eine weitere Beschreibung ihrer Farbe, Position und schliesslich der Zustand.
343
+
344
+
**Beispiel:**
345
+
346
+
*`RefreshBarButtonItem` / `RefreshBarButtonItem@2x` and `RefreshBarButtonItemSelected` / `RefreshBarButtonItemSelected@2x`
347
+
*`ArticleNavigationBarWhite` / `ArticleNavigationBarWhite@2x` and `ArticleNavigationBarBlackSelected` / `ArticleNavigationBarBlackSelected@2x`.
348
+
349
+
Bilder die in einem ähnlichen Bereich eingesetzt werden, sollten innerhalb des Bilder-Ordners in entsprechende Unterordner eingeteilt werden.
350
+
351
+
## Wahrheitswerte (Booleans)
352
+
353
+
Da `nil` zu `NO` aufgelöst wird, ist es nicht notwendig, es in Bedingungen zu vergleichen. Vergleiche nie etwas direkt mit `YES`, da `YES` als 1 definiert ist und ein `BOOL`-Typ kann 8 Bits lang sein.
354
+
355
+
Dadurch ist eine Gleichmäßigkeit über mehrere Files hinweg und bessere visuelle Klarheit gewährleistet.
356
+
357
+
**Beispiel:**
358
+
359
+
```objc
360
+
if (!someObject) {
361
+
}
362
+
```
363
+
364
+
**Not:**
365
+
366
+
```objc
367
+
if (someObject == nil) {
368
+
}
369
+
```
370
+
371
+
-----
372
+
373
+
**Für ein `BOOL`, hier ein weiteres Beispiel:**
374
+
375
+
```objc
376
+
if (isAwesome)
377
+
if (![someObject boolValue])
378
+
```
379
+
380
+
**Not:**
381
+
382
+
```objc
383
+
if ([someObject boolValue] == NO)
384
+
if (isAwesome == YES) // Niemals so.
385
+
```
386
+
387
+
-----
388
+
389
+
Wenn der Name eines `BOOL` Property als Adjektiv formuliert wurde, kann die Vorsilbbe "is" weggelassen werden. Allerdings sollte der konventionelle Name für den Getter Zugriff spezifiert werden, z.B.:
Text und Beispiel stammen von [Cocoa Naming Guidelines](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingIvarsAndTypes.html#//apple_ref/doc/uid/20001284-BAJGIIJE).
395
+
396
+
## Singletons
397
+
398
+
Singletons sollten ein thread-sicheres Muster bei der Erstellung ihrer Instanzen einhalten.
399
+
```objc
400
+
+ (instancetype)sharedInstance {
401
+
static id sharedInstance = nil;
402
+
403
+
static dispatch_once_t onceToken;
404
+
dispatch_once(&onceToken, ^{
405
+
sharedInstance = [[self alloc] init];
406
+
});
407
+
408
+
return sharedInstance;
409
+
}
410
+
```
411
+
412
+
Dies wird [einigen möglichen Abstürzen] vorbeugen (http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html).
413
+
414
+
## Xcode Projekt
415
+
416
+
Die real vorhanden Dateien sollten mit den Dateien in Xcode synchronisiert werden, um ein Durcheinander zu vermeiden. Alle Gruppen, die in Xcode erstellt wurden, sollten sich im Dateisystem widerspiegeln. Code sollte nicht nur nach seinem Typ, sondern auch nach den entsprechenden Features gruppiert werden, um eine bessere Übersicht zu gewährleisten.
417
+
418
+
Wenn möglich, sollte die Option "Treat Warnings as Errors" in den Target Build Einstellungen angepasst werden und soviel [zusätzliche Warnungen] wie möglich ausgeben (http://boredzo.org/blog/archives/2009-11-07/warnings). Wenn eine bestimmte Warnung ignoriert werden soll, benutze [Clangs pragma feature] (http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas).
419
+
420
+
# Weitere Objective-C Styleguides
421
+
422
+
Wenn unserer nicht Euren Geschmack trifft, schaut euch ein paar andere Styleguides an:
0 commit comments