总结一犯了个错误,自己先总结反思下

总结意在使记忆更深刻,而不是拿出来作秀的,简单明了即可,不能废话太多。

总结(一)里回顾了.h文件中的类的说明

这里回顾.m文件中实现接口的函数体

(之所以用.m来做扩展名,m代表message,愿意为objective-c是基于消息的)

和c/c++一样,obj-c的.m文件,开始也是引入头文件部分

c/c++用的是

#include

obj-c则是

#inport

书上说#inport要优于#include,真假其实不重要,无所谓的事情。

关于是

#inport "头文件.h"

还是

#inport <头文件.h>

很容易理解,和c/c++,标准库,系统等头文件用<>,自定义的用的”“。

@implementation 类名
@end

这个区域内是放类接口具体实现的,如下:

#import "Recipient.h"@implementation Recipient- (id) hello
{printf("Recipient says hello!\n");return self;
}@end
这里实现的是类Recipient的hello接口。vc里,用 :: 来标记具体的函数是属于哪个类的。而obj-c则是通过
@implementation

来标记。这两者有何不同,有什么优劣之分吗?

简单的例子代码:

#import<Foundation/Foundation.h>int main(int argc, char *argv[]){NSAutoreleasePool * pool = [NSAutoreleasePool  new];NSLog(@"Hello World!");[pool drain];return 0;
}
main函数同c/c++,但函数调用就不太一样了
obj-c里,据说不是函数调用,而是向某个对象发送消息。一切的一切的一切的流程都是基于消息的(这也就是为啥文件扩展名用.m)
NSAutoreleasePool * pool = [NSAutoreleasePool  new];

这句代码用c/c++来解释,就是

NSAutoreleasePool * pool = new NSAutoreleasePool;
只是函数的调用,变成了消息的传递。这样做的好处是,可以更灵活,一个类可以接收或者转发自己未定义的消息。而如果函数调用的话,编译就会报错。
感觉这样做,是要比c/c++好。
NSLog(@"Hello world!");
NSLog,就相当于MessageBox,只是box是弹出,这个是输出信息。
这里@是告诉编译器,后边的字符串,当做一个NSString来处理

转载于:https://www.cnblogs.com/samuraiboy/archive/2011/06/14/2080611.html

Objective C学习总结(二)相关推荐

  1. iPhone软件开发编程语言Objective C学习资料

    iPhone软件开发编程语言Objective C学习资料 一.XCode.Objective-C.Cocoa说的是几样东西? 答案:三样东西.   XCode:你可以把它看成是一个开发环境,就好像V ...

  2. 语义分割:基于openCV和深度学习(二)

    语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semanti ...

  3. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  4. Mybatis底层原理学习(二):从源码角度分析一次查询操作过程

    在阅读这篇文章之前,建议先阅读一下我之前写的两篇文章,对理解这篇文章很有帮助,特别是Mybatis新手: 写给mybatis小白的入门指南 mybatis底层原理学习(一):SqlSessionFac ...

  5. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  6. Membership学习(二)membership入门

    Membership学习(二)membership入门 --不写一行代码在asp.net中实现用户验证管理系统 这篇文章我们将实现一个简单的网站,在网站中实现用户的身份验证,创建用户,修改密码 还有限 ...

  7. appium学习【二】:用try捕获异常后,用例的执行结果为pass

    appium学习[二]:用try捕获异常后,用例的执行结果为pass 参考文章: (1)appium学习[二]:用try捕获异常后,用例的执行结果为pass (2)https://www.cnblog ...

  8. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  9. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  10. Maven学习总结(二)——Maven项目构建过程练习

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验 ...

最新文章

  1. 暑期集训1:C++STL 练习题E:POJ-2431
  2. NodeJs端口被占用的情况
  3. IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)
  4. java trace优化_使用Arthas trace定位并优化接口响应慢的问题.md
  5. linux进入文件系统命令,卸载正在被访问的文件系统 - fuser命令
  6. C++知识点45——类继承中的类型转换与访问权限控制(上)
  7. python进阶:JSON与枚举
  8. 超凡先锋怎么进入维护服务器,超凡先锋新手教程怎么过 新手教程攻略_超凡先锋...
  9. android外接键盘打汉字,Android在外接物理键盘时,如何强制调用系统软键盘
  10. TensorFlow2.0(二)--Keras构建神经网络分类模型
  11. 深度优先搜索——自然数的拆分问题(洛谷 P2404)
  12. KinectFusion: Real-Time Dense Surface Mapping and Tracking
  13. RHEL7 -- 使用Chrony设置时间与时钟服务器同步
  14. mysql指定库执行sql语句_对多个mysql的一部分库进行执行sql语句
  15. js实现的万年历显示
  16. MVC+knockoutjs知识点总结
  17. 人脸识别技术及其各种用例
  18. Git统计一段时间内代码的修改量
  19. 常用DEBUG命令及使用详解
  20. 深度:国产FPGA研究框架

热门文章

  1. Linux笔记-iptables开放指定端口,开放ICMP协议,其他端口禁止访问
  2. IDEA中报错“cannot resolve symbol XXX”,但编译正确可以运行
  3. Web前端笔记-使用Webpack调用echarts画图
  4. Qt工作笔记-自定义菜单(右键菜单)
  5. 安卓 linux 街机 dc,DC最强的街机模拟器
  6. web文件服务器 开源,10个开源的基于WEB的文件管理器
  7. 编译3.0的linux内核,Ubuntu 编译 Linux 3.0-rc4 内核
  8. ise verilog多模块编译_如何使用ISE高效开发Verilog项目(新手)
  9. mongodb 分组聚合_mongodb 聚合命令
  10. java反编译工具_安卓逆向之反编译工具的使用