面试题:Category类别增加一个属性,不实现setter,getter方式,是否会崩溃?

Q:Category类别增加一个属性,不实现setter,getter方式,是否会崩溃?

代码验证

#import "ViewController.h"

NS_ASSUME_NONNULL_BEGIN

@interface ViewController (Test)

@property (nonatomic, assign) int weight;

@end

NS_ASSUME_NONNULL_END
#import "ViewController+Test.h"

@implementation ViewController (Test)

@end

Xcode系统警告

Property 'weight' requires method 'weight' to be defined
- use @dynamic or provide a method implementation in this category

属性'weight'需要定义方法'weight'
- 使用@dynamic或在这个类别中提供一个方法实现

Property 'weight' requires method 'setWeight:' to be defined
- use @dynamic or provide a method implementation in this category

属性'weight'需要定义方法'setWeight:'
- 使用@dynamic或在这个类别中提供一个方法实现

总结

类别自动生成setter、getter方法声明,但是不会生成方法的具体实现;

  1. 编译可以通过,无报错提示,只有警告⚠️
  2. 程序运行起来,不使用weight的setter和getter方法,不会出现crash。

你可能感兴趣的:(面试题:Category类别增加一个属性,不实现setter,getter方式,是否会崩溃?)