oc是值类型还是引用类型传递

动态 未结 0 140
小小草
小小草 LV1 2023年9月23日 23:40 发表
在 Objective-C 中,对象是引用类型,而基本数据类型(如 int、float 等)是值类型。 当我们传递一个对象时,实际上是传递了该对象的指针(即内存地址),而不是对象本身。因此,在方法中修改对象的属性或调用对象的方法,会影响到原始对象。 例如,下面是一个简单的例子: ``` @interface Person : NSObject @property (nonatomic, copy) NSString *name; @end @implementation Person @end // 主函数 Person *person1 = [[Person alloc] init]; person1.name = @"Tom"; Person *person2 = person1; person2.name = @"Jerry"; NSLog(@"%@", person1.name); // 输出"Jerry" ``` 在上面的例子中,我们定义了一个名为Person的类,并创建了两个Person对象:person1和person2。接着,我们将person1赋值给person2,然后修改person2的name属性为“Jerry”。 最后,我们输出person1的name属性,发现它已经被修改为“Jerry”。这是因为person1和person2指向同一个对象,所以对person2的修改也会影响到person1。 总之,在 Objective-C 中,对象是引用类型,传递的是对象的指针。如果需要避免修改原始对象,可以使用 copy 关键字来复制对象。而基本数据类型是值类型,传递的是值的副本,不会影响原始值。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复