深入浅出Objective-C笔记(八)

Foundation Framework (1)


  • 基本类型

C语言所有的基本数据类型在OC里都是合法的

int (有符号跟无符号整型所占位数是不确定的,要看编译器情况,所以代码在不同系统移植会不方便)
double
float
char

Foundation Framework

BOOL (YES, NO)
NSInteger
NSUInteger

OC里的有符号/无符号整型所占位数是一样的
只要涉及整型尽量使用OC里的整型

  • NSString

    • 它是不可变的字符串,一旦字符串对象生成了就不可以改变它。

    • 创建字符串对象:

    • NSString *s = [[NSString alloc] init];//创建了一个空的字符串对象

    • 因为NSString对象是不可以改变的,所以我们生成一个空字符串对象没太大意义。

    • 因为创建字符串在编程中频率很高,所以OC提供了一种更便捷的字面量的语法来创建字符串。

    • 创建一个hello world!字符串并输出:

    • NSString *s = @"hello world!";//@符号表示这是个OC特有的语法

    • NSLog(s); //NSLog()函数可以接受NSString对象作为参数直接输出

    • 如果想知道一个字符串的长度怎么办?

      • NSInteger length = [ s length];
    • 如何比较两个字符串是否相同?

      int main (int argc, const char *argv[]) {
          @autoreleasepool {
              NSString *string1 = @"this is string1";
              NSString *string2 = @"this is string2";
              BOOL result = [string1 isEqualToString:string2];
              if (result) {
                  NSLog (@"Equal!");
              } else {
                  NSLog (@"Not Equal!");
              }
          }
          return 0;
      }
      
      输出结果:Not Equal!
      
    • 比较字符串大小的方法

      int main (int argc, const char *argv[]) {
          @autoreleasepool {
              NSString *string1 = @"This is string1";
              NSString *string2 = @"This is string2";
              NSComparisonResult result = [string compare:string2];
              NSLog(@"result:%d", result);
          }
          return 0;
      }
      
      NSComparisonResult是枚举类型,一共三种取值,-1(小于),0(等于),1(大于)
      
      输出结果:-1 (说明第一个字符串比第二个字符串小)
      
      字符串比较是按照字典序比较的
      
    • 格式化方法创建一个字符串

      int main (int argc, const char *argv[]) {
          @autoreleasepool {
              NSString *s = [NSString stringWithFormat:@"This is a format string: an int %d and string: %@", 99, @"str");
          NSLog(s);
          }
          return 0;
      }
      
      输出结果:This is a format string: an int 99 and string: str
      
    • 常用的格式化参数

格式化参数语法 含义
%@ 对象
%d, %i 整数
%u 无符号整数
%f 浮点
%x,%X 十六进制数
%o 八进制数
%p 指针

要注意%@,在OC里,所有对象都继承的基类NSObject,它里面有个方法 (NSString*) description,这个方法返回的是一个NSString类型的字符串,它的返回值就是%@参数所对的内容(传给%@的具体值)。

如果我们要以字符串的形式输出对象的描述的话,我们就可以在自己创建的类里重新去实现这个description方法。这样在当我们去生成格式化字符串的时候就可以直接用%@把这个对象的描述字符串抽取出来。(也就是把description的返回值(是一个字符串,它的内容是对对象的描述)填到%@这个格式化参数去)

  • 如何在字符串里完成搜索和替换功能?

    int main (int argc,const char *argv[]) {
        @autoreleasepool {
            NSString *string = @"This is a long string";
            NSString *substring = @"long";
             
            NSRange range = [string rangeOfString:substring];
            NSLog(@"location: %d, length: %d", range.location, range.length);
            
            NSString *str = [string stringByReplacingOccurrencesOfString:@"long" withString:@"short"short];
            NSLog(@"str: %@", str);
         }
         return 0;
    }
    
     //NSRange 是一个结构体类型,它含有两个成员变量,一个是location(表示子串开头所在母串的位置),length表示子串的长度。
    
    //输出结果:location: 10, length: 4
    
    //因为NSString类型的字符串是不可变的,所以我们可以通过替换子串的办法生成新的字符串。
    
    //输出结果:This is a short string
    

你可能感兴趣的:(深入浅出Objective-C笔记(八))