A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曦正 中级黑马   /  2016-2-22 18:14  /  1209 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在MRC模式下,如果不在自动释放池里的话,任何对象都需要自己去调用release方法
但是作为NSString也是一个对象,那么我们平时创建一个字符串的话也是相当于创建了一个NSString对象
当我们不去使用这个字符串的时候,我们理所当然就应该把这个对象销毁掉
我创建了一个NSString分类,并对dealloc方法进行重写
  1. -(void)dealloc{
  2.    
  3.     NSLog(@"is over");
  4.    
  5.     [super dealloc];
  6. }
复制代码
然后在main函数里面去执行
  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[]) {

  4.    
  5.     NSString* str =@"asc";
  6.    
  7.     [str release];
  8.     return 0;
  9. }
复制代码
发现并不会执行NSString的一个dealloc方法
________________________________________________________________________________________
__________这个究竟是为什么呢???难道上面那个字符串是在常量区不用销毁??
________________________________________________________________________________________


2 个回复

倒序浏览
nsstring是oc的基础数据类型,并没有retainCount

评分

参与人数 2黑马币 +14 收起 理由
久伴 + 8
曦正 + 6 很给力!

查看全部评分

回复 使用道具 举报
这样吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马