当前位置: 代码迷 >> Iphone >> Object-C初学者消息发送和类指针的区别
  详细解决方案

Object-C初学者消息发送和类指针的区别

热度:29   发布时间:2016-04-25 05:49:30.0
Object-C菜鸟求教:消息发送和类指针的区别
我分不清" . "和“[]”两种方式的适用范围,请指教。
------
我以实例来说:
OC的库里面有一个NSDate,NSDate有一个类方法date,其定义如下:
@interface NSDate (NSDateCreation)
+ (instancetype)date;
@end 

显然,+ 意味着这是类方法!

问题描述:
首先:用消息调用:NSDate *now = [NSDate date]; //程序正确
接着:用指针调用:NSDate *da = NSDate.date;//程序不报错
表面上看没什么,实际上,却问题不一般!
[NSDate date];这种方式,点击ESC键直接有提示,
而NSDate.date这种方式,根本没有提示,我是为了测试才一个字一个字敲出来的!
待遇差距大啊!
-----------------
问题:
1、以NSDate为例,消息发送方式(比如:[NSDate date])与 指针调用方式[NSDate.date]有什么区别 ?
2、以NSDate为例,消息发送方式和指针调用方式的适用范围分别是多少?

菜鸟求指教!!!
------解决方案--------------------
[NSDate date] 是oc的标准语法。
凡是从NSObject派生出来的对象,换句话说就是NS开头的类,尽量准守oc的标准语法,既[]消息调用。
NSDate.date,你说的是指针调用?那它内部调用的什么指针,self还是super.如果是按C++标准调用,NSDate::date才是准确调用,因为date其实是静态方法(类方法)。对于这句个人也不是很理解,期待高手。
  相关解决方案