Hiện nay XCode có phiên bản mới nhất là 4.5.2. So với phiên bản 4.5 thì các phiên bản 4.5.1 và 4.5.2 chủ yếu là để sửa các lỗi trong phiên bản 4.5. So với các phiên bản trước đó thì XCode 4.5 có những điểm nổi bật như sau:
- LLDB là trình gỡ rối mặc định thay cho GDB.
- Hỗ trợ OpenGL debugging & performance analysis.
- Auto layout.
- Object-C literal trong NSArray và NSDictionary.
- Hỗ trợ truy xuất bằng toán tử [].
- Hỗ trợ chuẩn C++11.
Trong các điểm này thì 4 và 5 là hai điểm hấp dẫn nhất:
// character literals.
NSNumber *theLetterZ = @'Z'; // equivalent to [NSNumber numberWithChar:'Z']
// integral literals.
NSNumber *fortyTwo = @42; // equivalent to [NSNumber numberWithInt:42]
NSNumber *fortyTwoUnsigned = @42U; // equivalent to [NSNumber numberWithUnsignedInt:42U]
NSNumber *fortyTwoLong = @42L; // equivalent to [NSNumber numberWithLong:42L]
NSNumber *fortyTwoLongLong = @42LL; // equivalent to [NSNumber numberWithLongLong:42LL]
// floating point literals.
NSNumber *piFloat = @3.141592654F; // equivalent to [NSNumber numberWithFloat:3.141592654F]
NSNumber *piDouble = @3.1415926535; // equivalent to [NSNumber numberWithDouble:3.1415926535]
// BOOL literals.
NSNumber *yesNumber = @YES; // equivalent to [NSNumber numberWithBool:YES]
NSNumber *noNumber = @NO; // equivalent to [NSNumber numberWithBool:NO]
#ifdef __cplusplus
NSNumber *trueNumber = @true; // equivalent to [NSNumber numberWithBool:(BOOL)true]
NSNumber *falseNumber = @false; // equivalent to [NSNumber numberWithBool:(BOOL)false]
#endif
Lưu ý:
- Giá trị sau @ là một giá trị đơn, không chấp nhận biểu thức. Trong trường hợp cần đóng gói
(boxing) cho một biểu thức thì sử dụng cú pháp:@(expression)
- Đóng gói giá trị enum thì giá trị này chuyển sang kiểu của enum, nếu enum không khai báo kiểu
thì kiều mặc định là số nguyên.
- Đóng gói C string chuyển thành NSString với UTF8 encoding.
- Container literals:
- Array: NSArray*a = @[Danh sách các đối tượng ngăn cách nhau bằng dấu phẩy];
- Dictionary: NSDictionary*b = @{ 1 danh sách các cặp @"key":object cách nhau bằng dấu phẩy}.
- Object subscripting:
NSMutableArray *array = ...;
NSUInteger idx = ...;
id newObject = ...;
id oldObject = array[idx];
array[idx] = newObject; // replace oldObject with newObject
NSMutableDictionary *dictionary = ...;
NSString *key = ...;
oldObject = dictionary[key];
dictionary[key] = newObject; // replace oldObject with newObject
- Sử dụng #if __has_feature(objc_array_literals|objc_dictionary_literals|objc_subscripting) để kiểm tra chức năng này có hay không.
Không có nhận xét nào:
Đăng nhận xét