美文网首页
OC-Catagory实现多继承

OC-Catagory实现多继承

作者: 紫云夕月 | 来源:发表于2021-08-25 15:36 被阅读0次
    #import "ViewController.h"
    #import "Programmer.h"
    #import "Programmer+Program.h"
    #import "Student.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.title = @"首页";
        
        Programmer * grammer = [Programmer new];
        grammer.title = @"zhaoxd";
        NSLog(@"title---%@",grammer.title);
        [grammer draw];
        [grammer sing];
        
        Student * student = [Student new];
        student.content = @"baidi";
        NSLog(@"title---%@",student.content);
        [student draw];
        [student sing];
    }
    @end
    
    #import <Foundation/Foundation.h>
    
    @interface Programmer : NSObject
    
    @end
    
    #import "Programmer.h"
    
    @implementation Programmer
    
    @end
    
    #import "Programmer.h"
    
    @interface Programmer (Program)
    // 声明属性
    @property (nonatomic, assign) NSString * title;
    @property (nonatomic, assign) NSString * content;
    // 声明公有方法
    - (void)draw;
    - (void)sing;
    @end
    
    #import "Programmer+Program.h"
    #import <objc/runtime.h>
    
    @implementation Programmer (Program)
    // 为Catagory添加属性
    //set方法
    - (void)setTitle:(NSString *)title{
        objc_setAssociatedObject(self, @selector(title), title, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }
    //get方法
    - (NSString *)title{
        return objc_getAssociatedObject(self, @selector(title));
    }
    
    //set方法
    - (void)setContent:(NSString *)content{
        objc_setAssociatedObject(self, @selector(content), content, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    }
    //get方法
    - (NSString *)content{
        return objc_getAssociatedObject(self, @selector(content));
    }
    
    // 私有方法
    - (void)program {
        NSLog(@"I'm writing bugs!");
    }
    // 实现公有方法
    - (void)draw {
        NSLog(@"I can draw");
    }
    - (void)sing {
        NSLog(@"I can sing");
    }
    @end
    
    #import "Programmer.h"
    
    @interface Student : Programmer
    
    @end
    
    #import "Student.h"
    
    @implementation Student
    // 实现公有方法
    - (void)draw {
        NSLog(@"Student can draw");
    }
    - (void)sing {
        NSLog(@"Student can sing");
    }
    @end
    

    相关文章

      网友评论

          本文标题:OC-Catagory实现多继承

          本文链接:https://www.haomeiwen.com/subject/dmquvltx.html