`
mikixiyou
  • 浏览: 1100921 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353761
社区版块
存档分类
最新评论

NSString对象的初始化和比较

    博客分类:
  • iOS
阅读更多

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:,比较指针的是==比较符号。通常情况下,你需要比较的都会是内容本身而不是其指针值。

0
3
分享到:
评论

相关推荐

    iOS NSString详细操作

    - **初始化方法**:通过`[[NSString alloc] initWithFormat:]`等方法创建`NSString`对象,此时需要手动管理内存。 ```objective-c NSString *aString = [[NSString alloc] initWithFormat:@"这也是个NS字符串!"]...

    NSString用法.pdf

    NSString对象代表不可变的Unicode字符串,这意味着一旦创建,就不能修改字符串中的字符。下面我们将详细探讨NSString类的一些主要特性、方法和用法。 1. **字符串创建**: - `NSString`对象可以通过初始化一个特定...

    ios demo,NSData和NSString之间的相互转换的源代码

    NSData对象可以用字节数组初始化,或者从文件、网络或其他来源加载数据。 2. **NSString**:NSString也是Foundation框架的一部分,它代表了不可变的Unicode字符串。NSString提供了丰富的字符串操作方法,如拼接、...

    iphone 开发学习基础NSString

    NSString对象可以通过多种方式创建,最常见的是使用`@""`字面量语法,例如`NSString *str = @"Hello, World!";`。此外,也可以通过初始化方法如`initWithString:`或`initWithFormat:`来创建。 字符串的合并是另一个...

    NSString帮助文档

    `NSString` 提供了多种初始化方法,常见的有: - **initWithFormat:**:使用指定格式字符串创建一个新实例。 - **initWithCString:**:使用 C 字符串创建 `NSString` 实例。 - **initWithContentsOfURL:**:从指定 ...

    application:iPhone应用程序是由主函数main启动,它负责调用UIApplicationMain函数,该函数的形式如下所示:int argc,char * argv [],NSString * principalClassName,NSString * delegateClassName);那么UIApplicationMain函数到底到底做了什么事情呢?这个函数主要负责三件事情:1)从给定的类名初始化应用程序对象,也就是初始化UIApplication或子类对象的一个​​实例,如果你在这

    这个函数主要负责三件事情: 1)从给定的类名初始化应用程序对象,也就是初始化UIApplication或子类对象的一个​​实例,如果你在这里给定的是nil,那么系统会替换UIApplication类,也就主要是这个类来控制以及协调...

    AHKBuilder:基于构建器模式的不可变对象的初始化

    AHKBuilder允许您AHKBuilder地将基于构建器模式的初始化添加到不可变对象。 博客文章中介绍了实现方法: : 用法 假设您有一个简单的Reminder类: @interface Reminder : NSObject @property ( nonatomic , copy...

    ios NSData NSString AES加密解密算法源码

    在`NSData`对象的加密过程中,你需要创建一个AES的加密上下文,设置密钥和初始化向量(IV)。密钥长度可以是128、192或256位,但在这个例子中,通常选择128位,因为它是最快且最广泛支持的。初始化向量是用于增加...

    AutoPropertyInit:AutoProperty是一个NSObject类别,它简化了NSObject子类的初始化属性的过程。

    例如,NSString属性返回一个初始化的NSString对象,该对象不包含任何字符。 NSArray初始化一个新分配的数组,依此类推。用法示例直接在该类的指定初始值设定项中。 例如,它在数据解析器中很有用,否则最好使用延迟...

    iOS objective-c 实体类对象的序列化为Json及反序列化

    Objective-C的实体类对象序列化和反序列化是数据处理的关键环节,它涉及到如何将内存中的对象转换为可存储或传输的数据格式,如JSON(JavaScript Object Notation),以及如何将接收到的JSON数据还原为对象。...

    NSStringDemo

    在Objective-C编程中,`NSString` 和 `...这包括字符串的初始化、比较、格式化、拼接、分割、查找和替换等常见操作。通过学习这些示例,开发者可以更熟练地掌握Objective-C中的字符串处理技术,提升代码的质量和效率。

    ios经典面试题

    在iOS开发领域,面试题...这些知识点是iOS开发者必须掌握的基础,涵盖了内存管理、对象初始化、多线程、数据存储以及面向对象编程的关键概念。在面试中,了解并能熟练运用这些知识点是衡量开发者专业能力的重要指标。

    Object-c字符串数组字典

    字符串操作包括初始化、长度计算、字符访问、拼接、子字符串提取、类型转换、字符串比较和大小写转换等。数组操作包括元素的获取、计数和搜索。字典操作则涵盖了键值对的获取、修改、增加和删除。集合操作包括元素的...

    NSString与C字符串之间的相互转换

    在iOS和macOS开发中,我们经常会遇到Objective-C的NSString对象和C语言的字符数组(C字符串)之间的转换。NSString是Apple的Foundation框架中的一个核心类,它提供了对Unicode字符串的支持,而C字符串则基于C语言的...

    ios-YUDBModel.zip

    架构: 使用runtime和Sqlite实现NSObject扩展类YUDBModel,直接实现(json反序列...智能: 自动增删改表字段,自动初始化空对象(NSObject,NSArray,NSDictionary,NSString) github:https://github.com/c6357/YUDBModel

    Objective-C学习心得

    16. **对象初始化**: `[[类名 alloc] init]` 或 `[类名 new]` 用于创建并初始化对象。 17. **控制流语句**: 包括 `for`, `while`, `do-while` 循环以及 `break` 和 `continue` 语句来控制程序流程。 18. **分支...

    OC学习的全部总结

    本文将全面总结OC的学习要点,包括类、对象、属性、setter、指定初始化、便利构造器等核心概念。 首先,我们来看类的定义。在OC中,类是对象的蓝图,它描述了对象的状态(属性)和行为(方法)。每个类都有一个唯一...

    ios 对象私有属性的访问和修改

    需要注意的是,KVC虽然方便,但并不总是安全的,因为它可能会导致未知的副作用,特别是当属性不存在或者未初始化时。因此,除非确实必要,否则应谨慎使用。 接下来,Runtime是Objective-C的另一项强大特性,它在...

    OC-里的字符串

    1. 直接初始化:`NSString *str = @"Hello, World!";` 2. 使用`+ (instancetype)stringWithFormat:(NSString *)format, ...`方法:`NSString *str = [NSString stringWithFormat:@"My age is %d", 25];` 3. 使用`...

    OC-初学者基础-字符串

    1. 直接初始化字符串: ```objc NSString *str = @"Hello, World!"; ``` 2. 使用`init`方法和`stringWithFormat:`: ```objc NSString *str = [[NSString alloc] initWithString:@"Hello"]; NSString *formattedStr ...

Global site tag (gtag.js) - Google Analytics