objective-c - 在oc里面点号和中括号发送消息的区别

【字号: 日期:2023-12-21浏览:36作者:雯心

问题描述

本来我以为在oc里面发送一个消息只能用中括号的

后来一个typo让我发现其实直接像c++那样用点号也是可以发送消息,只不过会多一个警告,内容看不太明白

objective-c - 在oc里面点号和中括号发送消息的区别

很奇怪他说得并不是deprecated什么的,而是说这么用有副作用,不只看有谁能帮我解析一下这里说的副作用是什么意思

相关代码

// 申明@property (weak, nonatomic) IBOutlet UITextField *textfield; // 运行代码self.textfield.resignFirstResponder; //写成这样会出警告,但是能运行[self.textfield resignFirstResponder]; // 按这样的标准写法就没事

问题解答

回答1:

这行警告是这样的,不是说你这样做有副作用,而是说getter是用来取值,而发送 resignFirstResponder 是一个side effect,不建议用getter。.号在 @synthesize 的属性上等于getter和setter方法

回答2:

字面翻译是:属性的返回值没有被使用。也就是说:应该a =b.c;而不建议直接用b.c;和类方法不一样,方法你可以这么用:o.method();

回答3:

学习了,resignFirstResponder方法一般习惯都采用消息发送的方式。

相关文章: