声明一个类
#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
对象?
La modification de NSString est une copie, ce qui signifie que lors de la copie, un autre morceau de mémoire est ouvert, pas une copie de pointeur.
Toutes les classes en Objective-c, les opérations après l'instanciation des objets sont des opérations de pointeur. @ renvoie un pointeur d'objet anonyme.