iPhone 5: -568h > ~iphone > @2x > .
-568h@2x~iphone
-568h~iphone
-568h@2x
-568h
@2x~iphone
~iphone
@2x
.
| NSString *theString; // You have a string. | |
| /// Option 1: floatValue | |
| if ([theString floatValue] != 0 || [theString hasPrefix:@"0.0"] || [theString isEqualToString:@"0"]) { | |
| // theString should be number | |
| } | |
| @implementation UIColor (Random) | |
| + (instancetype)randomColor { | |
| return [self colorWithRed:(arc4random() % 255) / 255.f | |
| green:(arc4random() % 255) / 255.f | |
| blue:(arc4random() % 255) / 255.f | |
| alpha:1]; | |
| } |
| // UIView category | |
| - (void)adjustFrame:(void(^)(CGRect *frame))block { | |
| CGRect frame = self.frame; | |
| block(&frame); | |
| self.frame = frame; | |
| } |
iPhone 5: -568h > ~iphone > @2x > .
-568h@2x~iphone
-568h~iphone
-568h@2x
-568h
@2x~iphone
~iphone
@2x
.
| // How do you implement lazy loading getters? | |
| - (NSString *)title { | |
| if ( ! self->_title) { | |
| NSString *string = @"lazy loaded"; | |
| // Do some real stuff here... | |
| self->_title = string; | |
| } | |
| return self->_title; | |
| } |
| 2013-03-22 21:26:36.231 TeeVee[86457:c07] *** -[__NSCFCalendar components:fromDate:]: date cannot be nil | |
| I mean really, what do you think that operation is supposed to mean with a nil date? | |
| An exception has been avoided for now. | |
| A few of these errors are going to be reported with this complaint, then further violations will simply silently do whatever random thing results from the nil. | |
| Here is the backtrace where this occurred this time (some frames may be missing due to compiler optimizations): | |
| ( | |
| 0 CoreFoundation 0x0283da75 -[__NSCFCalendar components:fromDate:] + 85 | |
| 1 TeeVee 0x00037e0e -[TVUpcomingEpisodeViewController viewDidLoad] + 3886 | |
| ... |
| - (NSString *)stringByDeletingHTML { | |
| // Delete HTMl tags. | |
| /// http://stackoverflow.com/questions/277055/remove-html-tags-from-an-nsstring-on-the-iphone | |
| NSRange range; | |
| NSMutableString *string = [self mutableCopy]; | |
| while ((range = [string rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) | |
| [string deleteCharactersInRange:range]; | |
| // Replace escaped sequences. | |
| NSDictionary *escapes = @{ |
| CGFloat CGFloatAdjustToScreenScale(CGFloat value, NSRoundingMode mode) { | |
| CGFloat (*roundingFunction)(CGFloat); | |
| switch (mode) { | |
| case NSRoundPlain: roundingFunction = &roundf; break; | |
| case NSRoundUp: roundingFunction = &ceilf; break; | |
| case NSRoundDown: roundingFunction = &floorf; break; | |
| case NSRoundBankers:roundingFunction = &roundf; break; | |
| } | |
| CGFloat scale = [[UIScreen mainScreen] scale]; | |
| CGFloat result = roundingFunction(value * scale) / scale; |
| #if !defined(NS_BLOCK_ASSERTIONS) | |
| #define MTKAssert(CONDITION, MESSAGE, ...)\ | |
| if ( ! (CONDITION) && (( [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] file:[NSString stringWithUTF8String:__FILE__] lineNumber:__LINE__ description:MESSAGE, ##__VA_ARGS__], YES)) ) | |
| #else | |
| #define MTKAssert(CONDITION, MESSAGE, ...)\ | |
| if ( ! (CONDITION) && (( NSLog(@"*** Assertion failure in %s, %s:%d, Condition not satisfied: %s, reason: '" MESSAGE "'", __PRETTY_FUNCTION__, __FILE__, __LINE__, #CONDITION, ##__VA_ARGS__), YES)) ) |
| // The Unlicense (https://unlicense.org) | |
| - (NSString *)guessName { | |
| unsigned char redComponent = roundf(self.redComponent*4); | |
| unsigned char greenComponent = roundf(self.greenComponent*4); | |
| unsigned char blueComponent = roundf(self.blueComponent*4); | |
| // Component methods implemented below. | |
| static NSString * const black = @"black"; | |
| static NSString * const red = @"red"; |