iOS内存管理-你可能不知道的NSString内存管理

技术之路任重道远,且行且珍惜!

个人认为:提有问题,经过思考和实践,最后分析总结,这样理解的比较深刻。因此按照这个顺序来说一下字符串的相关内存管理的问题!

提出问题

  • aString 和bString的内存地址是否一致?
NSString *aString = @"234";
NSString *bString = @"234";
  • 在Xcode中会有哪些警告提示?
NSString *cString = [NSString stringWithString:@"234"];
NSString *dString = [NSString stringWithString:@"234"];
  • 如下四个变量(aString、bString、cString、dString)的内存地址是否一致?
NSString *aString = @"234";
NSString *bString = @"234";
NSString *cString = [NSString stringWithString:@"234"];
NSString *dString = [NSString stringWithString:@"234"];
  • 如下四个变量(aString、bString、cString、dString)的实际类型是什么类型?你会说NSString吗?
NSString *aString = @"234";
NSString *bString = @"234";
NSString *cString = [NSString stringWithString:@"234"];
NSString *dString = [NSString stringWithString:@"234"];
  • aString 和bString的内存存储区域是哪一块?栈区?堆区?数据区?代码区?
NSString *aString = @"234";
NSString *bString = @"234";
  • 变量eString和fString的内存存储区域是哪一块?栈区?堆区?数据区?代码区?
NSString *eString = [[NSString alloc]initWithString:@"234"];
NSString *fString = [[NSString alloc]initWithString:@"234"];
  • aString 和bString的isa指向什么类型?
NSString *aString = @"234";
NSString *bString = @"234";
  • formatString1、formatString2、nString内存地址是否一致?实际类型是什么?存储区域?
 NSString *formatString1 = [NSString stringWithFormat:@"234"];
 NSString *formatString2 = [NSString stringWithFormat:@"234"];
 NSString *nString = [[NSString alloc]initWithString:@"234"];
  • mString1和mString2的具体类型是什么?内存存储区域是哪一块?isa指向是哪些?
NSMutableString *mString1 = [NSMutableString stringWithString:@"234"];
NSMutableString *mString1 = [NSMutableString stringWithString:@"234"];
  • 看下面的代码
@interface SBObject: NSObject

@property (nonatomic, copy) NSMutableString *str;

@end

@implementation SBObject
- (void)test {
    NSMutableString *formatString3 = [NSMutableString stringWithFormat:@"2345"];
    self.str = formatString3;
    [self.str respondsToSelector:@selector(replaceCharactersInRange:withString:)];
}
@end

试问下面这行代码的结果是YES还是NO?

[self.str respondsToSelector:@selector(replaceCharactersInRange:withString:)];
  • 字符串对象底层有几种类型?

看到的各位朋友可自行试验一下?最近比较忙会陆续将剩下的补充完成?

解答

分析

深究

你可能感兴趣的:(iOS_内存管理)