みなさんこんにちは!
プログラマが少なくとも半分の時間をコードの作成に費やすことは秘密ではありません。 この時間をできるだけ短くすることは論理的です。
一度、
NSString *
コンストラクトをもう一度書いたとき、何かを変える時だと思いました。
iOS向けに開発することで、どのように人生を簡素化できますか?
この記事は、 別の記事の拡張です。
リテラル
少し前まで、Objective-cはコードの量を減らすために多数のリテラルをサポートし始めました。
すべての例は、Xcode 4.5に関連します。
そのため、次の構成を圧縮されたアナログに置き換えます。
[NSArray arrayWithObjects:@"1", @"2", @"3", nil] => @[@"1", @"2", @"3"]; [NSDictionary dictionaryWithObjects:@"1", @"2", @"3", nil forKeys:@"one", @"two", @"three", nil] => @{@"one" : @"1", @"two" : @"2", @"three" : @"3"}
オブジェクトがnilでないことを確認してください。そうでないと例外が発生します。
続ける
[NSNumber numberWithChar:'A'] => NSNumber *theA = @'A'; // [NSNumber numberWithInt:42] => NSNumber *fortyTwo = @42; [NSNumber numberWithUnsignedInt:42U] => NSNumber *fortyTwoUnsigned = @42U; [NSNumber numberWithLong:42L] => NSNumber *fortyTwoLong = @42L; [NSNumber numberWithLongLong:42LL] => NSNumber *fortyTwoLongLong = @42LL; // [NSNumber numberWithFloat:3.141592654F] => NSNumber *piFloat = @3.141592654F; [NSNumber numberWithDouble:3.1415926535] => NSNumber *piDouble = @3.1415926535; // [NSNumber numberWithBool:YES] => NSNumber *yesNumber = @YES; [NSNumber numberWithBool:NO] => NSNumber *noNumber = @NO;
同様に、変数からオブジェクトを指定できます。 かっこに入れてください@()
もっと面白い!
NSMutableArray * array = [@[@"1", @"2", @"3"] mutableCopy] ; [array objectAtIndex:0] => array[0]; array[0] = @"5"; NSMutableDictionary *dictionary = [@{@"one" : @"1", @"two" : @"2", @"three" : @"3"} mutableCopy]; NSString *key = @"one"; oldObject = dictionary[key]; dictionary[key] = newObject;
一般に、大量の構文糖。
マクロ
さまざまな方法でマクロに関連付けることができますが、開発を高速化できます。
開発に適した興味深いマクロのリストは次のとおりです。
#define ApplicationDelegate ((MyAppDelegate *)[[UIApplication sharedApplication] delegate]) #define UserDefaults [NSUserDefaults standardUserDefaults] #define SharedApplication [UIApplication sharedApplication] #define Bundle [NSBundle mainBundle] #define MainScreen [UIScreen mainScreen] #define ShowNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = YES #define HideNetworkActivityIndicator() [UIApplication sharedApplication].networkActivityIndicatorVisible = NO #define NetworkActivityIndicatorVisible(x) [UIApplication sharedApplication].networkActivityIndicatorVisible = x #define NavBar self.navigationController.navigationBar #define TabBar self.tabBarController.tabBar #define NavBarHeight self.navigationController.navigationBar.bounds.size.height #define TabBarHeight self.tabBarController.tabBar.bounds.size.height #define ScreenWidth [[UIScreen mainScreen] bounds].size.width #define ScreenHeight [[UIScreen mainScreen] bounds].size.height #define TouchHeightDefault 44 #define TouchHeightSmall 32 #define ViewWidth(v) v.frame.size.width #define ViewHeight(v) v.frame.size.height #define ViewX(v) v.frame.origin.x #define ViewY(v) v.frame.origin.y #define SelfViewWidth self.view.bounds.size.width #define SelfViewHeight self.view.bounds.size.height #define RectX(f) f.origin.x #define RectY(f) f.origin.y #define RectWidth(f) f.size.width #define RectHeight(f) f.size.height #define RectSetWidth(f, w) CGRectMake(RectX(f), RectY(f), w, RectHeight(f)) #define RectSetHeight(f, h) CGRectMake(RectX(f), RectY(f), RectWidth(f), h) #define RectSetX(f, x) CGRectMake(x, RectY(f), RectWidth(f), RectHeight(f)) #define RectSetY(f, y) CGRectMake(RectX(f), y, RectWidth(f), RectHeight(f)) #define RectSetSize(f, w, h) CGRectMake(RectX(f), RectY(f), w, h) #define RectSetOrigin(f, x, y) CGRectMake(x, y, RectWidth(f), RectHeight(f)) #define DATE_COMPONENTS NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit #define TIME_COMPONENTS NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit #define FlushPool(p) [p drain]; p = [[NSAutoreleasePool alloc] init] #define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0] #define RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
それらを1つのヘッダーファイルに入れ、
<project_name>-Prefix.pch
ます。 その後、コードでそれらを使用します。 とても便利です。
注 : iStyxユーザーは、このようにマクロ内のパラメーターを角括弧で囲むのが良いことに気づきました
#define RGB(r, g, b) [UIColor colorWithRed:(r)/255.f green:(g)/255.f blue:(b)/255.f alpha:1.f]
タイプのオーバーライド
まず、星とNSプレフィックスから離れるために使用する再定義を入力します。 主なものはそれらに慣れることです。
次に例を示します。
typedef NSString* String; typedef NSNumber* Number; typedef NSArray* Array; typedef NSMutableArray* MutableArray; typedef NSDictionary* Dictionary; typedef NSMutableDictionary* MutableDictionary;
おわりに
一般的に、表面的な習熟を実施しました。 作業を簡素化し、余分な文字を書かないでください(ただし、変数の論理名を忘れないでください!!!)
開発に頑張ってください。
PSユーザーPilot34は、 補助ツールのライブラリを共有しました。