看了好多文章,告訴了你好多方法,好多函數(shù),好多用法:高級(jí)、中極、低級(jí),可是在我看來其實(shí)低級(jí)的都不懂,別不信往下看。
一、alloc 是基礎(chǔ)方法吧,alloc的作用是什么?。?/h3>
- 應(yīng)該會(huì)說
alloc 是為對(duì)象分配內(nèi)存空間的,那就看看下面一道題。
- 那先來個(gè)
NSArray的問題吧,問:下面兩個(gè)對(duì)象的地址一樣嗎?
NSArray *arra1 = [NSArray alloc] init];
NSArray *arra2 = [NSArray alloc] init];
NSLog(@"%p", arra1);
NSLog(@"%p", arra2);
-
然而:地址是一樣的
然而結(jié)果是一樣的
-
arra1 和 arrr2 是同一個(gè)對(duì)象嗎?驗(yàn)證一下吧
NSArray *array3 = [[NSArray alloc] init];
NSArray *array4 = [[NSArray alloc] init];
NSLog(@"%p", array3);
NSLog(@"%p", array4);
if (array4 == array3) {
NSLog(@"同一對(duì)象");
}
-
arr3,arr4 指針平等,不相等
控制臺(tái)結(jié)果
這是什么原因呢?
答:[[NSArray alloc] init]返回的是一個(gè)空的不可變數(shù)組,你所創(chuàng)建的不同的空不可變數(shù)組,返回的是一個(gè)單例。
alloc 是為對(duì)象分配內(nèi)存空間的,那就看看下面一道題。NSArray的問題吧,問:下面兩個(gè)對(duì)象的地址一樣嗎? NSArray *arra1 = [NSArray alloc] init];
NSArray *arra2 = [NSArray alloc] init];
NSLog(@"%p", arra1);
NSLog(@"%p", arra2);
然而:地址是一樣的

然而結(jié)果是一樣的
arra1 和 arrr2 是同一個(gè)對(duì)象嗎?驗(yàn)證一下吧
NSArray *array3 = [[NSArray alloc] init];
NSArray *array4 = [[NSArray alloc] init];
NSLog(@"%p", array3);
NSLog(@"%p", array4);
if (array4 == array3) {
NSLog(@"同一對(duì)象");
}
arr3,arr4 指針平等,不相等

控制臺(tái)結(jié)果
這是什么原因呢?
答:[[NSArray alloc] init]返回的是一個(gè)空的不可變數(shù)組,你所創(chuàng)建的不同的空不可變數(shù)組,返回的是一個(gè)單例。
2016/5/30 今天就分享到這。