每天一点iOS知识回顾2

来源:互联网 发布:淘宝店全屏页头尺寸 编辑:程序博客网 时间:2024/05/13 16:55

1.假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd(缺少去除空格)

答:本题的题意是以第一个出现的字母作为参照,只要之后出现相同的字母并且和第一个字母不相邻,那么就删除。为防止删除某些字符之后,把之前不相邻的重复字符串转化为相邻字符串,所以可以先用空格替换掉需要删除的字符,最后对数组里面的空格进行处理。

-(void)removeRepeat:(NSString *)aNum

{

NSMutableArray *mArr = [[NSMutableArrayalloc]initWithCapacity:10];

for (int i = 0;i < aNum.length;i++)

{

[mArr addObject:[aNumsubstringWithRange:NSMakeRange(i,1)]];

}

NSLog(@"- %@", mArr);

[self compareNum:mArr];

NSLog(@"%@",mArr);

}

//比较是否相等

-(NSMutableArray*)compareNum:(NSMutableArray *)mArr

{

int count = mArr.count;//重新定义了,count不会减一

for (int j = 0; j < count - 1; j++)

{

for (int i = j; i < count - 1-1-1; i++)

{

NSLog(@" %@  %@",[mArr objectAtIndex:j],[mArrobjectAtIndex:i + 2]);

NSString *a = [mArr objectAtIndex:j];

NSString *b = [mArr objectAtIndex:i+2];

if ([a isEqualToString:b])

{

[mArr replaceObjectAtIndex:i + 2withObject:@" "];

}

}

}

return mArr;

}

2.获取一台设备唯一标识的方法有哪些?

答:1.UDID(13.5.1禁用)

2.UUID

3.MAC ADDRESS (禁用)

4.OPEN UDID (升级后改变)

5.广告标识符 (升级后改变)

6.Vindor标示符

上面的都是废的:ios7之后能用的时keychain(钥匙串)

3.ios类是否可以多继承?如果没有,那可以用其他方法实现吗?简述实现过程。

答:没有    用代理(代理遵循协议),协议(声明一堆方法),消息转发,来实现。实现过程就是写一个协议

4.堆和栈的区别?

答:堆需要用户手动释放内存,而栈则是编译器自动释放内存

补充:内存分5个区:堆,栈,全局(静态),常量,代码。

全局区(静态区)static)--全局变量和静态变量。程序结束后由系统释放。

文字常量区--常量字符串存放在这里。程序结束后由系统释放。

程序代码区—存放函数体的二进制文件。

5.ios本地数据存储都有哪几种方式?

答:    

1NSKeyedArchiver(归档)采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:initWithCoder:方法。

2NSUserDefaults用来保存应用程序设置和属性、用户保存的数据。用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSDataNSStringNSNumberNSDateNSArrayNSDictionary

3Write写入方式:永久保存在磁盘中。

4SQLiteFMDBCoreData

NSCoding + NSKeyedArchiver实现复杂对象的存储。

0 0