开发中遇到的问题

7. static const NSString *str   与  static NSString * const str  与 static NSString const *str 区别 ?

解答:static 只是代表静态变量,对着三种形式没有影响 。采用从右向左读的方式来区别它们。

 const NSString *str : str 是一个指针,指向不可变的NSString 地址;

NSString * const str : str 十一个不可变的指针,指向NSString 地址;

NSString const * str : str 是一个指针,指向不可变的NSString 地址。

例:

NSString * const str = @"123" ;
str = @"345" ; // 错误,这是一个不可变的指针

const NSString *  str = @"123" ;
str = @"345" ; //正确,指针可变

char c[5] ;
c[0] = 'a';
char d[5] ;
        
const char *s = c ;
        
s = d ; // 正确,指针可变
s[0] = 'a'; //错误,指向的内容不可变


6.Category不可以增加新的实例变量,但是可以增加属性。属性与实例变量的区别?

解答:声明属性可以指定一些特性,系统也会为我们自动生成setter/getter方法,和一个带下划线的同名实例变量。在Category中,增加的属性只会有setter/getter方法,不会增加实例变量。因为,在寻址的时候是按照偏移量来计算的,如果增加了实例变量,将会导致地址错误。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值