oc学习记录1-基本类

96 阅读4分钟
  • NSString
    • 创建空的字符串

      • NSString *str = [NSString new]
      • NSString *str = [NSString string]
      • NSString *str = [[NSString alloc] init]
    • NSString *str = @“jack“

    • 在内存中,创建时,会先查看内存中有没有。如果有,直接赋值,没有就创建。

    • 字符串不可修改,每次修改字符串,会创建一个新的字符串

    • 引用计数为0时,自动释放。

    • 属性:

      • length
      • UTF8String:C语言字符串,const类型
    • C语言字符串:

      • 是字符数组,通常使用char数组或指针来表示。
      • 只能用标准库函数,例如strlen、strcpy、strcat等。
      • 不可更改
    • 类方法:

      • stringWithUTF8String:将c语言字符串转化为OC字符串 ,可将用户输入转化;
      • stringWithFormat:拼接字符串,不输出,使用方式类似于 printf 函数,可以通过占位符插入变量的值。

NSString *str = [NSString stringWithFormat:@"大家好,我叫%@,我今年%d岁", name, age];

-   对象方法
    -   length:字符串长度,类型为NSUIntrger, %lu, 其实就是unsigned long
    -   characterAtIndex: 取指定下标字符,类型为unichar, C, 其实是unsigned short, 占两个字节,中文也占两个字节
    -   isEqualToString:判断两个字符串是否相同, 返回BOOL型,不要用==比较
    -   compare:比较字符串大小, 返回NSComparisonResult类型,枚举类型,可用int接收。-1小于,0等于,1大于
    -   compare: operation: 可忽略大小写、比较字符串里的数字
    -   hasPreFix:判断是否有某个前缀
    -   hasSufFix:判断是否有某个结尾
    -   rangeOfString:返回第一次出现某个子串的范围,NSRange类型。若没找到,location为NSUInteger的最大值,就是NSNotFound,或者length为0
    -   rangeOfString: operation: 可以从后往前搜
    -   subStringFromIndex:从指定下标截取到末尾
    -   subStringToIndex:截取到指定下标,不包括末尾
    -   subStringWithRange: 截取一段
    -   stringByReplaceingOccurrenceOfString :替换子串,返回一个新的字符串,原来的字符串不变
    -   int/double/float/integer/boolValue:转型。转数字时,只转从头开始的数字
    -   stringByTrimmingCharactersInset:去掉前后空格或小写字符或大写字符或指定字符、中间不去
    -   upper/lowerCaseString:转大、小写
    -   componentsSeperatedByString: 将字符串中用符号隔开的分割,返回NSArray
    -   dataUsingEncoding: NSUTF8StringEcoding:转二进制,返回NSData类型
  • NSMutableString:继承于NSString,具有可变性,改字符串不创建新的
    • 不能把@"hhhh"(NSString类型)赋值给NSMutableString,子类指针,不能指向父类对象
    • 对象方法:
      • appendString:追加
      • appendFormat:[str appendFormat: @"我今年%d岁",age]
    • 只在做大批量字符串拼接的时候使用,NSString中,相同的字符串是大家共用的,效率高
  • NSRange:{下标,长度}
    • NSRange range = {3, 7}
    • NSRange range; range.location = 3; range.length = 7;
    • NSMakeRange(loc,len)
  • NSArray
    • 只能存oc对象,同一个数组可以存不同类型的
    • 初始化之后,不可增删改
    • 连续存储
    • 初始化:
      • NSArray *arr = [ NSArray arrayWithObjects: @"jack", @"lili", nil],以nil结尾,表示结束,nil本质是0
      • NSArray *arr = @[@"jack", @"lili"]
    • 可以使用下标访问,越界会报错
    • 属性:
      • count:元素个数
      • firstObject:数组第一个元素,当数组为空时,返回nil
      • lastObject:最后一个元素
    • 类方法:
      • arrayWithContentsOfFile:从文件中读数组
    • 对象方法:
      • objectAtIndex:取指定下标元素
      • containsObject:是否包含某个元素
      • indexOfObject:返回元素首次出现的下标,如果没有,返回NSNotFound
      • componentsJoinedByString:将数组里的元素用一个string拼接起来
      • writeToFile:写入文件
    • 遍历
      • for(NSString * str in arr)
      • enumerateObjectsUsingBlock:传一个bloc
  • NSMutableArray:继承于NSArray
    • 可以增删改
    • NSMutableArray *arr = @[@"jack", @"lili"],这样不可以
    • 对象方法:
      • addObject:新增元素
      • addObjectsFromArray:将另一个数组的元素一个一个加进来
      • insertObject:在指定位置插入
      • removeObjectAtIndex: 在指定位置删除
      • removeObject:删除指定元素
      • removeObject: inRange: 删除指定元素,指定范围
      • removeLastObject:删除最后一个元素
  • NSNumber:用来包装基本数据类型,然后存到NSArray中
    • 基本数据类型加一个@符号,就变成了NSNumber类型:@10 等价于 [NSNumber numberWithInt: 10]
    • 若是变量,要加括号: @(num)
    • 获取基本数据值的方法:int/double..Value
    • 类方法:
      • numberWitnInt/Double/Float/
    • 比较方法
      • (NSComparisonResult)compare:(NSNumber *)otherNumber`
      • (BOOL)isEqualToNumber:(NSNumber *)number`
  • NSValue:将结构体包装成oc对象
  • NSDictionary:
    • 键必须是遵守了NSCopying协议(实现浅拷贝copyWithZone方法)的对象
    • 值是oc对象
    • 初始化:
      • dictionaryWithObjextsAndKeys: 值,键,值,键,nil
      • @{键:值,键:值}
    • []访问
    • 属性:
      • count
    • 对象方法: objectWithKey:根据键查值,没有返回nil
    • 遍历:(for id item in dic)//item是键,dic[item]是值
  • NSMutableDictionary:可以增删