- Mutable Versus Immutable
可变和不可变类型区别:
在ios中例如字典和array都会分成可变与不可变两种,可变的会再之后自动扩展size,例如可变的array可以添加新的元素,来扩展array的size大小。但是不可变的可以更好的控制内存,使代码效率更高。
!!!!不可变的赋值问题,是否不可变的在alloc的时候就必须进行赋值,记忆中答案是只需要定义array大小就可以,有待验证。
- NSInteger and NSUInteger
两者的区别在于NSUInteger是Unsign的,也就是说U是unsign的缩写,unsign的数字都是没有符号的,不会区分正负,使用时需要注意。 ===>拓展Unsign的缩写为U代表这个变量类型没有符号。
- CGFloat
浮点类型
- NSString
String类型
- NSNumber
将数字按照对象进行存储
- id
一种特殊的数据类型,可以化身为各种类型。
有了id,用户在调用一个对象的方法时,就可以不必知道这个对象具体是什么类型。
//ClassA.h
#import <Foundation/NSObject.h>
@interface ClassA: NSObject
-(void) print;
@end
//ClassB.h
#import <Foundation/NSObject.h>
@interface ClassB: NSObject
-(void) print;
@end
//main.m
#import <stdio.h>
#import "ClassA.h"
#import "ClassB.h"
int main( int argc, const char *argv[] ) {
// create instance
ClassA *a = [[ClassA alloc] init];
ClassB *b = [[ClassB alloc] init];
id number;
// print a
number = a;
[number print];
printf( "\n" );
// print b
number = b;
[number print];
printf( "\n" );
}
The output is:
this is ClassA
this is ClassB
- NSDictionary and NSMutableDictionary
hashtable,key和value的样式,和map的使用感觉差不多。
- NSArray and NSMutableArray
和list的感觉差不多就是数组。
- NSSet, NSMutableSet, NSOrderedSet, NSMutableOrderedSet
和NSArray类似,但是本系列变量只能存储不重复的数据,而NSArray可以存储重复数据。Order的是对顺序的要求,保持和录入的顺序一致,否则录入后乱序。
NSSet *setOfNumbers = [NSSet setWithArray:@[@3, @4, @1, @5, @10]];
NSLog(@"Set of numbers = %@", setOfNumbers);
The output is:
Set of numbers = {(
5,
10,
3,
4,
1
)}
NSOrderedSet *setOfNumbers = [NSOrderedSet orderedSetWithArray :@[@3, @4, @1, @5, @10]];
NSLog(@"Ordered set of numbers = %@", setOfNumbers);
The output is:
Ordered set of numbers = {(
3,
4,
1,
5,
10
)}
- NSCountedSet
NSCountedSet用于保存对象,同时集成Set的特性,使得保存的对象不重复,但是可以计算其中某个重复的对象被加入了多少次。
NSCountedSet是可变的,而不是固定的。
NSCountedSet *setOfNumbers = [NSCountedSet setWithObjects: @10, @20, @10, @10, @30, nil];
[setOfNumbers addObject:@20];
[setOfNumbers removeObject:@10];
NSLog(@"Count for object @10 = %lu", (unsigned long)[setOfNumbers countForObject:@10]);
NSLog(@"Count for object @20 = %lu", (unsigned long)[setOfNumbers countForObject:@20]);
The output is:
Count for object @10 = 2
Count for object @20 = 2
- NSData and NSMutableData
主要应用内存中的数据和文件等。