Objective c 神奇的方法从何而来?

Objective c 神奇的方法从何而来?,objective-c,xcode,macos,Objective C,Xcode,Macos,我必须遵循Objective-C代码。但我不明白 什么是车内alloc,init*toyota=[[Car alloc]init] 这种方法是从哪里来的?集合模型 //汽车 #import <Foundation/Foundation.h> @interface Car : NSObject { } @property (copy) NSString *model; - (void)drive; @end //main.m #import <Foundation/Fo

我必须遵循Objective-C代码。但我不明白

什么是车内alloc,init*toyota=[[Car alloc]init]

这种方法是从哪里来的?集合模型

//汽车

#import <Foundation/Foundation.h>

@interface Car : NSObject {
}

@property (copy) NSString *model;

- (void)drive;

@end
//main.m

#import <Foundation/Foundation.h>
#import "Car.h"

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    Car *toyota = [[Car alloc] init];

    [toyota setModel:@"Toyota Corolla"];
    NSLog(@"Created a %@", [toyota model]); // SQL: Insert into Car value 

    toyota.model = @"Toyota Camry"; // SQL: Update car set model=''
    NSLog(@"Changed the car to a %@", toyota.model);

    [toyota drive]; // SQL: Select *from Car

  }
  return 0;
}

alloc和init从继承而来,它们初始化您的新车。setModel:是从@synthesisted属性模型和方法模型自动生成的,以获取其值。如果需要,可以重写这些方法以执行额外的工作。另外:在现代Objective-C中,属性访问器点语法通常比显式调用getter/setter方法更受欢迎。

他们为什么写这行NSLog@Createda%@[丰田车型];但并非如此NSLog@Createda%@,丰田。车型;?您也可以使用消息发送机制访问属性当然可以。然而,点语法通常是首选的。
#import <Foundation/Foundation.h>
#import "Car.h"

int main(int argc, const char * argv[]) {
  @autoreleasepool {
    Car *toyota = [[Car alloc] init];

    [toyota setModel:@"Toyota Corolla"];
    NSLog(@"Created a %@", [toyota model]); // SQL: Insert into Car value 

    toyota.model = @"Toyota Camry"; // SQL: Update car set model=''
    NSLog(@"Changed the car to a %@", toyota.model);

    [toyota drive]; // SQL: Select *from Car

  }
  return 0;
}