検索

ホームページ  >  に質問  >  本文

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

声明一个类

#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对象?

我想大声告诉你我想大声告诉你2885日前552

全員に返信(2)返信します

  • 大家讲道理

    大家讲道理2017-05-02 09:23:38

    NSString の変更はコピーです。これは、コピーするときに、ポインタのコピーではなく、別のメモリが開かれることを意味します。

    返事
    0
  • PHP中文网

    PHP中文网2017-05-02 09:23:38

    Objective-c のすべてのクラス、オブジェクトのインスタンス化後の操作はポインター操作です。 @ は匿名オブジェクト ポインタを返します。

    返事
    0
  • キャンセル返事