iOS开发笔记本

【iOS】面试小结_20171030

2017-11-09  本文已影响28人  zhangPeng丶

简书http://www.jianshu.com/u/5690b3ad0a6f
Bloghttp://blog.zhangpeng.site
GitHubhttps://github.com/fullstack-zhangpeng

下面代码打印true还是false?

    id arr = [[NSArray alloc] init];
    if ([[arr class] isKindOfClass:[NSArray class]]) {
        NSLog(@"true");
    } else {
        NSLog(@"false");
    }
答案:打印false
1.jpeg
代码在请见Demo中的Demo2
分析:类簇的原因
参考文章:
  1. Sunny大神写的《从NSArray看类簇》
  2. 《Objective-C类族和工厂模式》

下面代码打印什么内容?

    NSMutableSet *mSet = [[NSMutableSet alloc] init];
    [mSet addObject:@[@1, @2]];
    NSLog(@"1---%@", mSet);
    
    NSMutableArray *mArr = [[NSMutableArray alloc] initWithObjects:@1, nil];
    [mSet addObject:mArr];
    NSLog(@"2---%@", mSet);
    
    [mArr addObject:@2];
    NSLog(@"3---%@", mSet);
    
    [mSet addObject:@[@1, @2]];
    NSLog(@"4---%@", mSet);
答案:
2.png
分析:

第一次输出时,创建了一个包含@[@1, @2]的NSMutableSet

第二次输出时,向已经创建的mSet中添加一个可变数组

第三次输出时,向前面创建的mArr中添加一个@2,可以成功的将@[@1, @2]这个mArr添加到mSet中,应该是因为 @[@1, @2] 是__NSArrayI,mArr 是__NSArrayM,不能成功的判断相等

第四次输出时,由于集合内已经存在相同的@[@1, @2],而mSet中的元素是不能重复的,所以没有成功添加

代码在请见Demo中的Demo3
上一篇 下一篇

猜你喜欢

热点阅读