zoukankan      html  css  js  c++  java
  • 字符串属性使用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

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

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

  • 相关阅读:
    Golang Json文件解析为结构体工具-json2go
    沉浸式状态栏的简易实现
    高级数据结构及应用 —— 使用 bitmap 进行字符串去重
    机器学习:Kullback-Leibler Divergence (KL 散度)
    机器学习: 共轭梯度算法(PCG)
    二进制比特位运算
    C 语言经典面试题 —— 宏
    python base64 编解码,转换成Opencv,PIL.Image图片格式
    Kaggle:House Prices: Advanced Regression Techniques 数据预处理
    maven 细节 —— scope、坐标
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5034187.html
Copyright © 2011-2022 走看看