搜尋

首頁  >  問答  >  主體

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

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

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

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

相关代码

// 申明
@property (weak, nonatomic) IBOutlet UITextField *textfield; 

// 运行代码
self.textfield.resignFirstResponder; //写成这样会出警告,但是能运行

[self.textfield resignFirstResponder]; // 按这样的标准写法就没事
PHP中文网PHP中文网2769 天前479

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-21 10:59:14

    這行警告是這樣的,不是說你這樣做有副作用,而是說getter是用來取值,而發送 resignFirstResponder 是一個side effect,不建議用getter。
    .號在 @synthesize 的屬性上等於getter和setter方法

    回覆
    0
  • 阿神

    阿神2017-04-21 10:59:14

    字面翻譯是:屬性的回傳值沒有被使用。
    也就是說:應該
    a =b.c;
    而不建議直接用
    b.c;
    跟類別方法不一樣,方法你可以這麼用:
    o.method();

    回覆
    0
  • 黄舟

    黄舟2017-04-21 10:59:14

    學習了,resignFirstResponder方法一般習慣都採用訊息發送的方式。

    回覆
    0
  • 取消回覆