在 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 关键字来复制对象。而基本数据类型是值类型,传递的是值的副本,不会影响原始值。