神奇的方法来自哪里



我遵循Objective-C代码。但是我不了解

  • 什么是allocinit中的CC_2?

  • 此方法来自何处?setModel

//car.h

#import <Foundation/Foundation.h>
@interface Car : NSObject {
}
@property (copy) NSString *model;
- (void)drive;
@end

//car.m

#import "Car.h"
@implementation Car {
  double _odometer;
}
@synthesize model = _model;
- (void)drive {
  NSLog(@"Driving a %@. Vrooooom!", self.model);
}
@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;
}

allocinit是从NSObject继承的,它们初始化了您的新CarsetModel:是从您的@synthesize D属性model自动生成的(方法model也是为了获取其值)。您可以根据需要覆盖这些方法来进行额外的工作。另外:在现代Objective-C中,属性登录器(" dot")语法通常比明确调用Getter/setter方法优先。

最新更新