IOS pop至指定页面 --- IOS isKindOfClass 和 isMemberOfClass 的区别

来源:互联网 发布:mac系统怎么装ps 编辑:程序博客网 时间:2024/06/05 00:10

pop至指定页面

 //存储完数据后返回到账户设置页

                    /*
                     isKindOfClass 和 isMemberOfClass 的区别
                     isKindOfClass确定一个对象是否是一个类的实例对象,或者是基类(父类或父类的父类等等)的实例对象
                     isMemberOfClass只能确定一个对象是否是当前类的实例对象
                     
                     */
                    
                    UIViewController *tempViewController = nil;
                    for (UIViewController *controller in self.navigationController.viewControllers) {
                        if ([controller isMemberOfClass:[ZLAccountManagerTableViewController class]]) {
                            tempViewController = controller;
                        }
                    }
                    if (tempViewController) {
                        [self.navigationController popToViewController:tempViewController animated:YES];
                    }
                }


备注:NSArray 和NSMutableArray  苹果公司不鼓励使用
根据网友查询得出的结论是:NSArray、NSMutableArray属于类簇,使用isMemberOfClass不能取到正确的结果。
原因是:由于类簇的性质,这类对象实际返回的实例有不确定性。
NSArray对象可能会在运行时发现其实运作的是NSCFArray(来自Core Foundation框架(C语言的实现版本),很多Cocoa对象都是如此做桥接的)
总之对于类簇的判断要谨慎!
1 0