찾다

 >  Q&A  >  본문

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

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

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

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

相关代码

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

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

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

모든 응답(3)나는 대답할 것이다

  • 高洛峰

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

    이 경고 줄은 이렇게 하면 부작용이 있다는 의미는 아니지만 getter를 사용하여 값을 얻는다는 의미이며 ResignFirstResponder를 보내는 것은 부작용이 아닙니다. getter를 사용하는 것이 좋습니다.
    .number는 @synthesize

    속성의 getter 및 setter 메서드와 동일합니다.

    회신하다
    0
  • 阿神

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

    직역하면 속성의 반환 값이 사용되지 않습니다.
    즉,
    해야 합니다. a =b.c;

    을 직접 사용하는 것은 권장되지 않습니다. 기원전;
    클래스 메서드와 달리 다음과 같은 메서드를 사용할 수 있습니다.
    o.method();

    회신하다
    0
  • 黄舟

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

    일반적으로 ResignFirstResponder 메소드가 메시지를 보내는 데 사용된다는 것을 배웠습니다.

    회신하다
    0
  • 취소회신하다