美文网首页
关于自动合成方法的说明

关于自动合成方法的说明

作者: iOS打怪升级 | 来源:发表于2018-05-16 10:54 被阅读4次
    • 涉及: copy关键字 ,dynamic关键字、重命名合成方法名称,重命名实例变量
    @interface PersonModel: NSObject
    /*strong 是retain 操作,copy 是复制操作*/
    @property(nonatomic ,copy) NSString * str;
    @property(nonatomic ,copy) NSString * name;
    @property(nonatomic ,assign) NSInteger age;
    /*isMale 是male 的新getter 方法名*/
    @property(nonatomic ,assign,getter=isMale) BOOL male;
    @end
    @implementation PersonModel
    /*_newVariableName 是name 对应的新的实例变量*/
    @synthesize name = _newVariableName;
    /*dymamic 声明不采用系统默认提供的合成*/
    @dynamic age;
    - (void)setStr:(NSString *)str{
        _str = [str copy];//注意实现属性的特质
    }
    //重命名name 的实例变量
    - (NSString *)name{
        return _newVariableName;
    }
    
    - (BOOL)isMale{
        return _male;
    }
    @end
    
    
      //copy 属性测试
        NSMutableString * test = [[NSMutableString alloc] initWithString:@"1"];
        PersonModel * model = [PersonModel new];
        model.str = test;
        NSLog(@"%@\n- %@",model.str,test);
        [test insertString:@"2" atIndex:1];
        NSLog(@"%@\n- %@",model.str,test);//不采用copy时,model.str 会随着test 的变化变化,反之不会变化
        model.age = 1;//因为没有提供setter 方法,编译可以通过,但是运行时候会崩溃
    
    

    相关文章

      网友评论

          本文标题:关于自动合成方法的说明

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