A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋佳强 中级黑马   /  2014-7-7 17:59  /  2716 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么理解OC语法中的”[  ]“中括号,例如:
  1. Student *stu = [[[Student alloc] init] autorelease];
复制代码



评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

9 个回复

倒序浏览
OC中用[]表示消息传递(messaging),[Student alloc]意思是向Student对象发送名为alloc的消息。消息传递是面向对象语言诞生之初的叫法,现在多数面向对象语言把这叫作方法调用,用点语法操作。比如[Student alloc]在Java中就是Student.alloc
回复 使用道具 举报

[ ]在OC中就是用来发送消息的,也就是所谓的“消息机制”。你那个代码例子意思就是:
向Student发送一条alloc消息,创建了一个新对象,再向这个对象发送一条init消息来初始化这个对象,最后给这个新建的对象发送一条autorelease消息来自动释放内存。
搜索“消息机制”你会得到更为详尽的答案~
以上

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
fantacyleo 发表于 2014-7-7 18:21
OC中用[]表示消息传递(messaging),[Student alloc]意思是向Student对象发送名为alloc的消息。消息传递是面 ...

技术分遥遥无期啊这样,又不想水贴。。

点评

我那会真的是不懂啊,怎么就成水帖了,冤枉啊!! 还害我被扣分了!  发表于 2014-7-9 08:47
回复 使用道具 举报
Medwyn 发表于 2014-7-7 18:57
技术分遥遥无期啊这样,又不想水贴。。

只要认证回答了问题,版主都会看到并且加分的!
回复 使用道具 举报
个人感觉,就像是调用方法的一个形式, [Student alloc]就是Student调用已经存在的alloc方法来分配内存。
回复 使用道具 举报
oc 其实底层是用 c 语言实现的,每个[]都是执行一句  c 语言运行时代码
回复 使用道具 举报

回帖奖励 +1

进来学习一下。
回复 使用道具 举报
还没看到,进来看下 0.0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马