Objective c 神奇的方法从何而来?
我必须遵循Objective-C代码。但我不明白 什么是车内alloc,init*toyota=[[Car alloc]init] 这种方法是从哪里来的?集合模型 //汽车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
#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;
}