objective-c中,对对象赋值是否是为指针赋值?

浏览:53日期:2023-12-04

问题描述

声明一个类

#import <Foundation/Foundation.h>@interface Foo : NSObject <NSCoding>@property(copy, nonatomic)NSString *strVal;@property int intVal;@property float floatVal;@end

在main函数里

#import <Foundation/Foundation.h>#import 'Foo.h'int main (int argc, char *argv[]){ @autoreleasepool {Foo *myfoo1 = [[Foo alloc] init];Foo *myfoo2;myfoo1.strVal = @'This is the string'; } return 0; }

这里的strVal既然是一个指向NSString的指针,为什么又可以给它赋值一个NSString对象?

问题解答

回答1:

NSString的修饰是copy,说明复制时是又开辟的一块内存,不是指针复制。

回答2:

Objective-c里所有类,实例化对象后的操作,都是指针操作。@ 返回了一个匿名对象指针。

相关文章: