一、回忆一下,C语言的字符串比较函数strcmp,是比较ASCII码,对不对 1.那我们的OC字符串,是不是也可以比ASCII码呢 例如: NSString *str1 =@“jack”; NSString *str2 = @“rose”; 字符串比较的第一种方式,调用字符串对象的compare方法 - (NSComparisonResult)compare:(NSString *)string; [str1 compare:str2]; 这个时候,就比较str1和str2的大小 返回值什么类型的,是不是NSComparisonResult啊 这是个什么类型 管它什么类型 它返回的是这个类型,你就用这个类型接一下,不就可以了嘛 NSComparisonResult res = [str1 compare:str2]; 例如,随便调一个方法 str2 addObserver:(nonnull NSObject *) forKeyPath:(nonnull NSString *) options:(NSKeyValueObservingOptions) context:(nullable void *) 第一个参数:(nonnull NSObject *),是不是给个任意的NSObject就可以了 第二个参数:(nonnull NSString *) ,是不是给个字符串就可以了 第三个参数:(NSKeyValueObservingOptions),你没见过这个类型对不对,按住它点右键,点进去,走, typedef NS_OPTIONS(NSUInteger,NSKeyValueObservingOptions){ NSKeyValueObservingOptionNew = 0x01, NSKeyVauleObservingOptionOld = 0x02, NSKeyVauleObservingOptionInitial NS_ENUM_AVAILABlE(10_5,2_0) = 0x04, NSKeyVauleObservingOptionPrior NS_ENUM_AVAILABlE(10_5,2_0) = 0x08 }; 是不是是个枚举 所以你在调用别人的方法的时候啊,人家参数是什么类型,你就给个什么类型就可以了 返回值是什么,你就拿什么返回值去接就可以了