• 字符串属性使用strong的原因


    字符串属性使用strong的原因

    使用copy

    • 一般情况下,我们在声明字符串的时候,属性修饰符都是使用copy关键字
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    //外界改变时, 不会影响当前字符串.
    @property (nonatomic ,copy)NSString *name;
    
    @end
    • 其.m文件中的set方法
    #import "Person.h"
    
    @implementation Person
    
    -(void)setName:(NSString *)name{
        _name = [name copy];  
    }
    
    @end
    • 在set方法中,[name copy]会先去判断传递进来的name是否是可变的,如果是可变的就会重新生成一个新的地址,如果是不可变的就直接进行赋值.现实开发当中用到的都是不可变的字符串来进行赋值,如果使用copy就都得进行判断类型,这样就很大程度上降低了性能.

    使用strong

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    @property (nonatomic ,strong)NSString *name;
    
    @end
    • 其.m文件的set方法
    #import "Person.h"
    
    @implementation Person
    
    -(void)setName:(NSString *)name{
        _name = name;   
    }
    @end

    在外界进行赋值时,不会进行判断,直接将传递进来的字符串进行赋值.

    在实际应用中,我们可以通过传递不同类型的字符串,并打印内存地址来证明.

  • 相关阅读:
    北风设计模式课程---13、享元模式
    北风设计模式课程---观察者模式2
    北风设计模式课程---观察者模式
    北风设计模式课程---12、观察者模式
    Linux下yum订购具体解释
    不黑诺基亚,他们觉得萌萌达
    System.Threading.ThreadStateException
    SRS微信号和QQ组
    hibernate它 10.many2many单向
    UML 简单的总结
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5034187.html
Copyright © 2020-2023  润新知