Objective-CのLiterals(字面量)
4200 ワード
今日はObjective-C Literalsについて整理します.Literalsは字面量や字面値に翻訳され、ソースコードに直接書かれた値です.これは見知らぬ概念ではありません.私たちはプログラムを書くときに頻繁に見ることができます.NSStringの文字数はとっくに見ました.
文法は簡単で、上のコードはC文字列の前に@記号を付けることでNSStringオブジェクトgreetingを作成し、全体のコードが簡潔で分かりやすいように見えます.直接量文法がなければ、このgreetingを作成するには以下の方法が必要かもしれません.
Xcode 4.4およびLLVM 4.0以降、いくつかの新しい特性が提案され、そのうちの1つは、NSNumber、NSArray、およびNSDictionaryに対して字面量構文を使用することである.
NSNumber
新しいプロパティが提案される前に、NSNumberオブジェクトを作成する場合は、次のようになります.
では、今すぐこのように書くことができます.
もちろんここでは-numberWithIntだけでなく、他のものにも適用されます.
また、式:
NSArray
字面量構文を使用しない場合、配列を作成するのは通常次のようになります.
字面量文法があれば、このように書くことができます.
配列の字面量を作成する方法がより簡潔になり、カッコの前に字面量@記号を付けて内容を書き、終了フラグとしてnilを必要としなくなり、nilを削除しないと警告され、実行時にエラーが発生します.
NSDictionary
NSDictionaryを作成する従来の方法は次のとおりです.
以上の2つの方法は簡単ではなく、混乱しやすいように見えます.字面量文法は私たちにもっと良いオプションを与えて、以下の書き方を見てください.
書きやすくてすっきりしているように見えますが、このような形式はよく知られているように見えますか?JavaScriptのようなオブジェクト?JSONみたい?どうせ便利だと思います.
文字通りの量でNSArray、NSNumber、NSDictionaryを作成する以外は.コレクションが可変タイプの場合
NSMutableArray、NSMutableDictionaryでは、新しいプロパティを使用して、集合内の値にアクセスおよび変更することもできます.次のコードは、この特性を簡単に示しています.
これが私の知っているLiteralsのすべての内容で、今も新しいものではありませんが、私たちはそれを把握する必要があります.私たちがコードを書くのに便利で、コードの可読性が高く、スタイルがもっと良いことができます.
NSString *greeting = @"Hello World";
文法は簡単で、上のコードはC文字列の前に@記号を付けることでNSStringオブジェクトgreetingを作成し、全体のコードが簡潔で分かりやすいように見えます.直接量文法がなければ、このgreetingを作成するには以下の方法が必要かもしれません.
NSString *greeting = [NSString stringWithUTF8String:"Hello World"];
Xcode 4.4およびLLVM 4.0以降、いくつかの新しい特性が提案され、そのうちの1つは、NSNumber、NSArray、およびNSDictionaryに対して字面量構文を使用することである.
NSNumber
新しいプロパティが提案される前に、NSNumberオブジェクトを作成する場合は、次のようになります.
NSNumber *aNumber = [NSNumber numberWithInt:22];
では、今すぐこのように書くことができます.
NSNumber *aNumber = @22;
もちろんここでは-numberWithIntだけでなく、他のものにも適用されます.
// :
NSNumber *aBool = [NSNumber numberWithBool:YES];
NSNumber *aChar = [NSNumber numberWithChar:'a'];
NSNumber *aUnsigned = [NSNumber numberWithUnsignedInt:22U];
NSNumber *aLong = [NSNumber numberWithLong:27L];
NSNumber *aFloat = [NSNumber numberWithFloat:3.14F];
NSNumber *aDouble = [NSNumber numberWithDouble:3.14];
//
NSNumber *aBool = @YES;
NSNumber *aChar = @'a';
NSNumber *aUnsigned = @22U;
NSNumber *aLong = @27L
NSNumber *aFloat = @3.14F;
NSNumber *aDouble = @3.14;
また、式:
NSNumber *result = @(2+3*4);
も使用できます.NSArray
字面量構文を使用しない場合、配列を作成するのは通常次のようになります.
NSArray *aArray = [NSArray arrayWithObjects: [NSNumber numberWithInt:22], @"kuntzuo", @"hello", nil];
字面量文法があれば、このように書くことができます.
NSArray *aArray = @[@22, @"kuntzuo", @"hello"];
配列の字面量を作成する方法がより簡潔になり、カッコの前に字面量@記号を付けて内容を書き、終了フラグとしてnilを必要としなくなり、nilを削除しないと警告され、実行時にエラーが発生します.
NSDictionary
NSDictionaryを作成する従来の方法は次のとおりです.
NSArray *keys = [NSArray arrayWithObjects:@"Name", @"Sex", @"Age", nil];
NSArray *objects = [NSArray arrayWithObjects:@"kuntzuo", @" ", [NSNumber numberWithInt:22], nil];
NSDictionary *myProfile = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
//
NSDictionary *myProfile = [NSDictionary dictionaryWithObjectsAndKeys:
@"kuntzuo ", @"Name",
@" ", @"Sex",
[NSNumber numberWithInt:22], @"Age",
nil];
以上の2つの方法は簡単ではなく、混乱しやすいように見えます.字面量文法は私たちにもっと良いオプションを与えて、以下の書き方を見てください.
NSDictionary *myProfile = @{"Name":"kuntzuo","Sex":" ","Age":@22};
書きやすくてすっきりしているように見えますが、このような形式はよく知られているように見えますか?JavaScriptのようなオブジェクト?JSONみたい?どうせ便利だと思います.
文字通りの量でNSArray、NSNumber、NSDictionaryを作成する以外は.コレクションが可変タイプの場合
NSMutableArray、NSMutableDictionaryでは、新しいプロパティを使用して、集合内の値にアクセスおよび変更することもできます.次のコードは、この特性を簡単に示しています.
// NSArray *aArray
NSArray *aArray = @[@22, @"kuntzuo", @"hello"];
NSMutableArray *mutableArray = [@[@22, @"kuntzuo", @"hello"] mutableCopy];
//
NSString *greeting = [mutableArray objectAtIndex:2]; //"hello"
//
NSString *greeting = mutableArray[2]; // "hello"
//
mutableArray[2] = @"hello world";
// NSDictionary
NSDictionary *myProfile = @{"Name":"kuntzuo","Sex":" ","Age":@22}
NSMutableDictionary *mutableDic = [myProfile mutableCopy];
//
NSString *name = [mutableDic objectForKey:@"Name"]; // "kuntzuo"
//
NSString *myName = mutableDic[@"Name"];//"kuntzuo"
//
mutableDic[@"Name"] = @"kuntian zuo";
これが私の知っているLiteralsのすべての内容で、今も新しいものではありませんが、私たちはそれを把握する必要があります.私たちがコードを書くのに便利で、コードの可読性が高く、スタイルがもっと良いことができます.