最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

runtime获取appdelegate中的根导航条属性

iOS 天狐 10697浏览 0评论

最近的项目多家公司做一个项目 而且都是静态库进行代码合并,appdelegate在人家项目中,本代码实现获取appdelegate中的根导航

[UIApplication sharedApplication].delegate 不用appdelegate的类名强制转换是不能直接点出属性来的,类名未知,所以出此下策

#import <objc/runtime.h>
#import <objc/message.h>  
+(UINavigationController*)getAppRootNavigationController{
    
    UINavigationController *navController;
    u_int               count;
    objc_property_t *properties= class_copyPropertyList([[UIApplication sharedApplication].delegate class], &count);
    
    for (int i = 0; i < count ; i++)
    {
        const char *propertyName = property_getName(properties[i]);
        NSString *nameSting = [NSString  stringWithCString:propertyName encoding:NSUTF8StringEncoding];

        const char *propertType =property_getAttributes(properties[i]);
        NSString *typeSting = [NSString  stringWithCString:propertType encoding:NSUTF8StringEncoding];

        if ([typeSting rangeOfString:@"Navigation"].location != NSNotFound) {
            SEL selector =  NSSelectorFromString(nameSting);
            navController=  objc_msgSend([UIApplication sharedApplication].delegate, selector);
        }
        
        //free(properties);
    }
    return navController;

}

 

转载请注明:天狐博客 » runtime获取appdelegate中的根导航条属性

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址