黑马程序员——Object-C基础(十一)Foundation之结构体、字符串

来源:互联网 发布:世音琴行 淘宝 编辑:程序博客网 时间:2024/04/29 13:53

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Struct:

在Foundation中定义了很多常用结构体类型来简化我们的日常开发,这些结构体完全采用Objective-C定义,和我们自己定义的结构体没有任何区别,之所以由框架为我们提供完全是为了简化我们的开发。常用的结构体有NSRange、NSPoint、NSSize、NSRect等
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {        /*可变字符串,注意NSMutableString是NSString子类*/    //注意虽然initWithCapacity分配字符串大小,但是不是绝对的不可以超过此范围,声明此变量对性能有好处    NSMutableString *str1= [[NSMutableString alloc] initWithCapacity:10];    [str1 setString:@"hello"];//设置字符串    NSLog(@"%@",str1);    //结果:hello    [str1 appendString:@",world!"];//追加字符串    NSLog(@"%@",str1);    //结果:hello,world!    [str1 appendFormat:@"我的年龄是%i。dear,I love you.",18];    NSLog(@"%@",str1);    //结果:hello,world!我的年龄是18。dear,I love you.        //替换字符串    NSRange range=[str1 rangeOfString:@"dear"];    [str1 replaceCharactersInRange:range withString:@"Honey"];    NSLog(@"%@",str1);    //结果:hello,world!我的年龄是18。Honey,I love you.        //插入字符串    [str1 insertString:@"My name is Kenshin." atIndex:12];    NSLog(@"%@",str1);    //结果:hello,world!My name is Kenshin.我的年龄是18。Honey,I love you.        //删除指定字符串    [str1 deleteCharactersInRange:[str1 rangeOfString:@"My name is Kenshin."]];//删除指定范围的字符串    NSLog(@"%@",str1);    //结果:hello,world!我的年龄是18。Honey,I love you.        return 0;}

NSString:

不可变数组需要注意地方:
  • NSArray中只能存放对象,不能存放基本数据类型,通常我们可以通过在基本数据类型前加@进行转换; 
  • 数组中的元素后面必须加nil以表示数据结束; 
  • makeObjectsPerformSelector执行数组中对象的方法,其参数最多只能有一个; 
  • 上面数组操作中无论是数组的追加、删除、截取都没有改变原来的数组,只是产生了新的数组而已; 
  • 对象的比较除了使用系统自带的方法,我们可以通过自定义比较器的方法来实现;
可变数字注意地方:
  • 可变数组中的元素后面必须加nil以表示数据结束; 
  • 往一个可变数组中添加一个对象,此时这个对象的引用计数器会加1,当这个对象从可变数组中移除其引用计数器减1。同时当整个数组销毁之后会依次调用每个对象的releaes方法。 
  • 在不可变数组中无论对数组怎么排序,原来的数组顺序都不会改变,但是在可变数组中如果使用sortUsingSelector:排序原来的数组顺序就发生了变化。
#import <Foundation/Foundation.h>/* NSString : 不可变字符串  NSMutableString : 可变字符串 */int main(){        NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];    // 拼接内容到s1的后面    [s1 appendString:@" 11 12"];        // 获取is的范围    NSRange range = [s1 rangeOfString:@"is"];    [s1 deleteCharactersInRange:range];        NSString *s2 = [NSString stringWithFormat:@"age is 10"];        NSString *s3 = [s2 stringByAppendingString:@" 11 12"];            NSLog(@"s1=%@, s2=%@", s1, s2);        return 0;}void stringExport(){    // 字符串的导出    [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];            NSString *str = @"4234234";    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];    [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];}void stringCreate(){    /*     1.字符串的创建     */    NSString *s1 = @"jack";        //NSString *s2 = [[NSString alloc] initWithString:@"jack"];        NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];        // C字符串 --> OC字符串    NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];    // OC字符串 --> C字符串    const char *cs = [s4 UTF8String];        // NSUTF8StringEncoding 用到中文就可以用这种编码    NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];            // URL : 资源路径    // 协议头://路径    // file://    // ftp://    // http://weibo.com/a.png            // http://www.baidu.com        // NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];        NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];    NSLog(@"s6=\n%@", s6);            /*     一般都会有一个类方法跟对象方法配对     [NSURL URLWithString:<#(NSString *)#>];     [NSString stringWithFormat:@""];     [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];          */}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 魅蓝e被锁机了怎么办 魅蓝3s卡顿怎么办 魅族note5玩王者荣耀卡怎么办 魅族手机内存不够怎么办 魅族手机音量小怎么办 魅族mx5指纹解锁失灵怎么办 魅族手机费电快怎么办 魅族mx4pro玩王者荣耀卡怎么办 魅蓝5s玩游戏卡怎么办 魅蓝s6玩游戏卡怎么办 OPPO王者荣耀对局闪退怎么办 魅族手机太慢怎么办 魅蓝5信号不好怎么办 魅蓝数据网速慢怎么办 魅族联通网速慢怎么办 魅族手机wifi信号弱怎么办 魅蓝e2信号差怎么办 魅蓝e2gps信号弱怎么办 魅族网络信号差怎么办 魅族手机gps信号弱怎么办 魅族手机突然没有信号怎么办 魅族手机流量信号不好怎么办 魅族手机wifi信号差怎么办 魅族5s信号不好怎么办 魅族mx5的双击不亮屏怎么办 魅族mx5返回键失灵怎么办 电信苹果3g网速慢怎么办 魅蓝6开不了机怎么办 手机应用被锁了怎么办 魅族电池不耐用怎么办 魅族mx6现在很卡怎么办 魅族e2手机屏幕背景黑色怎么办 魅族x6手机锁了怎么办 360n5返回键失灵怎么办 360n5返回键不好用怎么办 魅族手机锁屏怎么办 魅族手机锁住了怎么办 手机己锁定怎么办魅族 魅蓝u10触屏没反应怎么办 魅蓝e2手机锁定怎么办 苹果手机声音键坏了怎么办