常见面试题二

  1. Objective-C中的@property
    这里有一篇文章写的挺好:关于property
  • 它是声明属性的关键字,系统会为该属性自动创建setter和getter方法(也就是accessor存取器)
  • 早期xcode版本中,需要@property和@synthesize配合使用,前者声明属性,后者指定合成的方法指向的变量名。可参见property和synthesize和@property相关
  • @synthesize的作用,可参见如下代码
@interface ViewController ()
@property (nonatomic, copy) NSString *name;
@end
@implementation ViewController {
        NSString *baseView;
}
@synthesize name = $name;
-(void)setName:(NSString *)newName {
        $name = newName;
        // name = newName; // 这样是不对的,因为synthesize告诉编译器成员变量叫$name,而不是name;
}
-(void)viewDidLoad {
        [super viewDidLoad];
        $name = @"";
}
@end
  1. Block
    很多关于block的文章都声明block是函数,这一点是错的。首先,Block是对象,这在apple的文档中有介绍:Working with Blocks
    Blocks Programming Topics
  • 知乎上有一篇文章:block的本质写的挺详细的
  1. 关于面向对象
    这里有一篇文章写得挺好:OC中面向对象的编程思想

你可能感兴趣的:(常见面试题二)