面试题答案
一键面试声明部分
@interface YourClass : NSObject
@property (nonatomic, copy) NSString *name;
@end
在上述声明中,@property
声明了 name
属性,系统会自动生成默认的访问器方法声明。但手动写的话如下:
@interface YourClass : NSObject
- (NSString *)name;
- (void)setName:(NSString *)name;
@end
实现部分
@implementation YourClass
- (NSString *)name {
return _name;
}
- (void)setName:(NSString *)name {
if (_name != name) {
_name = [name copy];
}
}
@end
这里在 setter
方法中使用 copy
操作,以确保 name
属性值的不可变性,这符合 NSString
使用 copy
修饰符的常见做法。同时通过比较指针判断是否需要重新赋值,避免不必要的内存操作。