NSSting的对象在使用@"xx"直接初始化赋值时,它会在内存"stack segment"中分配一个空间,用于保存该变量。
相同赋值的对象,会采用相同的内存空间,表现为内存地址相同。
可以理解为NSString的isa的值是一样的。
NSString *str2=@"e中国2";
NSString *str3=@"e中国2";
//
%p for pointers to show the memory address
NSLog(@"str2'addr is %p str3'addr is %p",str2,str3);
if (str2 == str3)
{
NSLog(@"str2'pointer = str3's");
}
if ([str2 isEqualToString:str3])
{
NSLog(@"str2'content = str3's");
}
使用stringWithFormat:工厂方法初始化NSString对象时,每次都独立分配内存空间。
我怀疑这个空间是在heap segment中,而不是stack segment中。
即使相同内容的NSString对象,通过%d获取的对象的内存地址的值不一致。
NSString *str2=[NSString stringWithFormat:@"e中国%i",2];
NSString *str3=[NSString stringWithFormat:@"e中国%i",2];
//
%p for pointers to show the memory address
NSLog(@"str2'addr is %p str3'addr is %p",str2,str3);
if (str2 == str3)
{
NSLog(@"str2'pointer = str3's");
}
if ([str2 isEqualToString:str3])
{
NSLog(@"str2'content = str3's");
}
NSString的比较方法,比较内容应该是isEqualToString:,比较指针的是==比较符号。通常情况下,你需要比较的都会是内容本身而不是其指针值。
分享到:
相关推荐
- **初始化方法**:通过`[[NSString alloc] initWithFormat:]`等方法创建`NSString`对象,此时需要手动管理内存。 ```objective-c NSString *aString = [[NSString alloc] initWithFormat:@"这也是个NS字符串!"]...
NSString对象代表不可变的Unicode字符串,这意味着一旦创建,就不能修改字符串中的字符。下面我们将详细探讨NSString类的一些主要特性、方法和用法。 1. **字符串创建**: - `NSString`对象可以通过初始化一个特定...
NSData对象可以用字节数组初始化,或者从文件、网络或其他来源加载数据。 2. **NSString**:NSString也是Foundation框架的一部分,它代表了不可变的Unicode字符串。NSString提供了丰富的字符串操作方法,如拼接、...
NSString对象可以通过多种方式创建,最常见的是使用`@""`字面量语法,例如`NSString *str = @"Hello, World!";`。此外,也可以通过初始化方法如`initWithString:`或`initWithFormat:`来创建。 字符串的合并是另一个...
这个函数主要负责三件事情: 1)从给定的类名初始化应用程序对象,也就是初始化UIApplication或子类对象的一个实例,如果你在这里给定的是nil,那么系统会替换UIApplication类,也就主要是这个类来控制以及协调...
AHKBuilder允许您AHKBuilder地将基于构建器模式的初始化添加到不可变对象。 博客文章中介绍了实现方法: : 用法 假设您有一个简单的Reminder类: @interface Reminder : NSObject @property ( nonatomic , copy...
在`NSData`对象的加密过程中,你需要创建一个AES的加密上下文,设置密钥和初始化向量(IV)。密钥长度可以是128、192或256位,但在这个例子中,通常选择128位,因为它是最快且最广泛支持的。初始化向量是用于增加...
例如,NSString属性返回一个初始化的NSString对象,该对象不包含任何字符。 NSArray初始化一个新分配的数组,依此类推。用法示例直接在该类的指定初始值设定项中。 例如,它在数据解析器中很有用,否则最好使用延迟...
Objective-C的实体类对象序列化和反序列化是数据处理的关键环节,它涉及到如何将内存中的对象转换为可存储或传输的数据格式,如JSON(JavaScript Object Notation),以及如何将接收到的JSON数据还原为对象。...
在Objective-C编程中,`NSString` 和 `...这包括字符串的初始化、比较、格式化、拼接、分割、查找和替换等常见操作。通过学习这些示例,开发者可以更熟练地掌握Objective-C中的字符串处理技术,提升代码的质量和效率。
在iOS开发领域,面试题...这些知识点是iOS开发者必须掌握的基础,涵盖了内存管理、对象初始化、多线程、数据存储以及面向对象编程的关键概念。在面试中,了解并能熟练运用这些知识点是衡量开发者专业能力的重要指标。
字符串操作包括初始化、长度计算、字符访问、拼接、子字符串提取、类型转换、字符串比较和大小写转换等。数组操作包括元素的获取、计数和搜索。字典操作则涵盖了键值对的获取、修改、增加和删除。集合操作包括元素的...
在iOS和macOS开发中,我们经常会遇到Objective-C的NSString对象和C语言的字符数组(C字符串)之间的转换。NSString是Apple的Foundation框架中的一个核心类,它提供了对Unicode字符串的支持,而C字符串则基于C语言的...
架构: 使用runtime和Sqlite实现NSObject扩展类YUDBModel,直接实现(json反序列...智能: 自动增删改表字段,自动初始化空对象(NSObject,NSArray,NSDictionary,NSString) github:https://github.com/c6357/YUDBModel
16. **对象初始化**: `[[类名 alloc] init]` 或 `[类名 new]` 用于创建并初始化对象。 17. **控制流语句**: 包括 `for`, `while`, `do-while` 循环以及 `break` 和 `continue` 语句来控制程序流程。 18. **分支...
本文将全面总结OC的学习要点,包括类、对象、属性、setter、指定初始化、便利构造器等核心概念。 首先,我们来看类的定义。在OC中,类是对象的蓝图,它描述了对象的状态(属性)和行为(方法)。每个类都有一个唯一...
需要注意的是,KVC虽然方便,但并不总是安全的,因为它可能会导致未知的副作用,特别是当属性不存在或者未初始化时。因此,除非确实必要,否则应谨慎使用。 接下来,Runtime是Objective-C的另一项强大特性,它在...
1. 直接初始化:`NSString *str = @"Hello, World!";` 2. 使用`+ (instancetype)stringWithFormat:(NSString *)format, ...`方法:`NSString *str = [NSString stringWithFormat:@"My age is %d", 25];` 3. 使用`...
1. 直接初始化字符串: ```objc NSString *str = @"Hello, World!"; ``` 2. 使用`init`方法和`stringWithFormat:`: ```objc NSString *str = [[NSString alloc] initWithString:@"Hello"]; NSString *formattedStr ...