美文网首页
iOS const的使用

iOS const的使用

作者: heart_领 | 来源:发表于2018-12-12 10:53 被阅读23次

const修饰符将其后的变量设置为常量,即str1和str2为常量,两者的区别在于,常量指针是否可以指向其他的内存块

一、NSString的情况
extern NSString * const str1;

NSString *const str1 = @"str1";
//    str1 = @"str1***str1";//报错:Cannot assign to variable 'str1' with const-qualified type 'NSString *const __strong'

总结:常量指针已经指向@"str1",不能再指向其他的内存@"str1***str1",因此不能修改常量指针指向的内容,常量指针仍然指向原内存中的内容。因为是NSString,所以改变指针指向的内存,才能改变指针指向的内容,常量指针指向的内存不变,所指向的内容就不会变

extern NSString const * str2;

NSString const *str2 = @"str2";
str2 = @"str2***str2";

总结:常量指针可以指向其他的内存,释放掉原来的内存,从而可以修改常量指针指向的内容(因为指向的内存变了)

NSString *s1 = @"s1";
s1 = @"";//s1指向了新的内存,不再指向原来的内存,跟原来的内存没有关系了
总结:当我们用字面量语法对一个变量赋值时相当于对他重新开辟了内存块,也就是原本的内存块和他是已经没有关系了。原来的内存因为没有指针指向,会被释放回收。
二、NSMutableString的情况
如果把NSString换成NSMutableString情况就不一样了

NSMutableString const *var1 = [@"str" mutableCopy];
[var1 appendString:@"__var"];//改变内存中的内容
var1 = [@"123" mutableCopy];//var1指向新的内存
NSLog(@"var1:%@",var1);

总结:可以修改原内存中的内容,也可以指向其他的内存

NSMutableString *const var2 = [@"str" mutableCopy];
    [var2 appendString:@"__var"];//改变内存中的内容
    var2 = [@"123" mutableCopy];//var2不能指向新的内存,报错:Cannot assign to variable 'var2' with const-qualified type 'NSMutableString *const __strong'
    NSLog(@"var2:%@", var2);

总结:可以修改原内存中的内容,不能指向其他的内存

大总结:
NSString *const str1
不可以修改常量指针指向的原内存中的内容,常量指针不可以指向其他的内存
NSString const *str2"
不可以修改常量指针指向的原内存中的内容,常量指针可以指向其他的内存
NSMutableString const *var1
可以修改常量指针指向的原内存中的内容,常量指针可以指向其他的内存
NSMutableString *const var2
可以修改常量指针指向的原内存中的内容,常量指针不可以指向其他的内存

相关文章

  • 一些小链接

    1、iOS 宏(define)与常量(const)的正确使用 iOS宏(define)与常量(const)的正确使...

  • #define const static

    iOS 宏(define)与常量(const)的正确使用

  • iOS简单学之13 - define与const区别

    参考:iOS 宏(define)与常量(const)的正确使用 写的比较仔细,推荐用const, 苹果api使用c...

  • 宏(define)与常量(const)

    参考文档 iOS 宏(define)与常量(const)的正确使用 15分钟弄懂 const 和 #define ...

  • iOS const的使用

    const修饰符将其后的变量设置为常量,即str1和str2为常量,两者的区别在于,常量指针是否可以指向其他的内存...

  • IOS:const的使用

    首先摆出代码: 问:最后输出结果是?答案: 解释:const的用法:修饰的部分不可变,为常量,但是不会改变变量的作...

  • static const extern define

    了解static 与 const的使用 看我上一篇文章.iOS写法优化,苹果推荐是使用const.下面我把整理的区...

  • iOS const、宏、static、extern的关系

    iOS const、宏、static、extern的关系 iOS const、宏、static、extern的关系

  • 2019-03-08

    iOS const、宏、static、extern的关系 - 简书 iOS中static,const,extern...

  • iOS中static,const,extern相关的问题

    iOS中static,const,extern相关的问题 iOS中static,const,extern相关的问题

网友评论

      本文标题:iOS const的使用

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