首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    老司机踩坑系列————中文排序

    ///汉字转拼音 -(NSString *)transferChineseToPinYin:(NSString *)string { NSMutableString *mutableString...添加空格 这样的话张Wicky就变成张 Wicky转成拼音就变成zhang wicky。排序完成。 然而我的61位用户就是因为我这一时大意而受到了无限crash的折磨。。。...一定是你不会用),经过上面的添加空格就会变成张 啊(名字中间变成了3个空格)。其实到这里还好,最可气的是-componentsSeparatedByString:这个方法的行为跟老司机想的不一致啊。...,copy) NSString * wordPinyinWithoutTone; @end @implementation NSString (DWStringSortUtils) -(NSComparisonResult...NSComparator comparator = ^(NSString *obj1, NSString *obj2){ NSString *str1 = [obj1 stringByAddingPercentEscapesUsingEncoding

    2K50

    KVO实现原理

    object_getClass(self.p1), object_getClass(self.p2)); [bwhtf4bhx2.png] 我们根据结果看到,在添加KVO观察者之后p1的类对象由Person变成了...NSKVONotifying_Person,虽然p1的类对象变成了NSKVONotifying_Person,但是我们在调用的时候感觉我们的p1的类对象还是Person,所以,我们可以猜测KVO会在运行时动态创建一个新类...KVO为了使其更像之前的类,还会将对象的class实例方法重写,使其更像原类 查看P1内部方法是否改变 我们在发现p1的类对象由Person变成了NSKVONotifying_Person,那我们也随便打印一下...Person和NSKVONotifying_Person内部方法都变成了什么 打印一下方法名 - (void)printMethodNamesOfClass:(Class)cls { unsigned..._NSSetLongLongValueAndNotify 在添加KVO监听方法以后setAge方法变成了_NSSetLongLongValueAndNotify,所以我们可以大概猜测动态监听方法主要就是在这里面实现的

    1.1K00

    YYCache 源码解析(一):使用方法,架构与内存缓存的设计

    *)key; //是否包含某缓存,有回调 - (void)containsObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString...,有回调 - (void)objectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, id object...:(NSString *)key withBlock:(nullable void(^)(NSString *key))block; //移除所有缓存,无回调 - (void)removeAllObjects...在YYMemoryCache中,使用了双向链表这个数据结构来保存这些缓存: 当写入一个新的缓存时,要把这个缓存节点放在链表头部,并且并且原链表头部的缓存节点要变成现在链表的第二个缓存节点。...将该节点的头指针指向的节点变成链表的尾节点(将倒数第二个节点变成倒数第一个节点,即尾部节点) _tail = node->_prev; //2.

    2.8K21
    领券