本文是今天内部周会上分享的部分内容。偷个懒就当做本月第一篇更新了..
Q1
id obj1 = [[NSString alloc] init];
id obj2 = [[NSString alloc] initWithString:@"hello"];
id obj3 = @"hello";
id obj4 = [NSString stringWithFormat:@"hello"];
id obj5 = [NSString stringWithFormat:@"hello, world"];
- obj1,obj2,...obj5都分别属于哪种类型的字符串
- obj2,obj3,obj4他们相等吗?
- 他们都存储在哪里? 堆?栈?还是其他什么地方
- NSString 的存储编码是 utf-8 吗?
下面有两个字符串,分别是NSString string1 = @"abcd", NSString string2 = @"abcd", 他们的长度分别是多少?
string1的长度4,string2的长度是6. emoji的长度为2. 那假如把emoji当做一个字符,怎么处理呢?
rangeOfComposedCharacterSequenceAtIndex:orrangeOfComposedCharacterSequencesForRange:来处理这种场景
Q2
eg1:
@property (nonatomic, strong) NSString *string;
dispatch_queue_t queue = dispatch_queue_create("com.leke.string", DISPATCH_QUEUE_CONCURRENT);
for (int i = 0; i < 1000000 ; i++) {
dispatch_async(queue, ^{
self.string = [NSString stringWithFormat:@"the %d string char", i];
});
}
eg1这段代码有什么问题吗?
eg2:
@property (nonatomic, strong) NSString *string;
dispatch_queue_t queue = dispatch_queue_create("com.leke.string", DISPATCH_QUEUE_CONCURRENT);
for (int i = 0; i < 1000000 ; i++) {
dispatch_async(queue, ^{
self.string = [NSString stringWithFormat:@"hi, %d", i];
});
}
eg2呢?
两者有什么区别之处吗?如果要解决问题有什么办法吗?
Q3
NSString是用strong修饰还是copy修饰,分别用于什么场景