问题描述
声明一个类
#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里所有类,实例化对象后的操作,都是指针操作。@ 返回了一个匿名对象指针。