Objective-c,.h中的方法声明和.m中的private属性混淆

Objective-c, method declaration in .h and private property in .m confusion

我正在阅读 this 教程,其中他在 cell .h file 中声明了一个接受 block 实现的方法.m class 中的方法,他声明了一个与 method @property (copy, nonatomic) void (^didTapButtonBlock)(id sender);

同名的 private property

这是什么做法?仅在 .h 中声明方法并在 .m

中创建私有 属性

我试着简单地这样做

我在 .h 文件中创建了一个方法

-(void)xyz:(NSString*)string;

在 .m 文件中

@property (nonatomic, strong) NSString *string;

但是Xcode发出警告Method definition for 'xyz' not found

请说说幕后发生了什么?

他公开了块变量的 setter 方法,但将 getter 保持私有,如果您注意到,该方法有单词 set,即 [=23] =] 方法 属性

您也可以这样做:

-(void)setXyz:(NSString*)xyz;

并在 .m 中:

@property (nonatomic, strong) NSString *xyz;

这种方式是为了确保其他class无法获取属性实例,但可以给它赋值