Objective C学习总结(二)
总结一犯了个错误,自己先总结反思下
总结意在使记忆更深刻,而不是拿出来作秀的,简单明了即可,不能废话太多。
总结(一)里回顾了.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学习总结(二)相关推荐
- iPhone软件开发编程语言Objective C学习资料
iPhone软件开发编程语言Objective C学习资料 一.XCode.Objective-C.Cocoa说的是几样东西? 答案:三样东西. XCode:你可以把它看成是一个开发环境,就好像V ...
- 语义分割:基于openCV和深度学习(二)
语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semanti ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- Mybatis底层原理学习(二):从源码角度分析一次查询操作过程
在阅读这篇文章之前,建议先阅读一下我之前写的两篇文章,对理解这篇文章很有帮助,特别是Mybatis新手: 写给mybatis小白的入门指南 mybatis底层原理学习(一):SqlSessionFac ...
- [转载]dorado学习笔记(二)
原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...
- Membership学习(二)membership入门
Membership学习(二)membership入门 --不写一行代码在asp.net中实现用户验证管理系统 这篇文章我们将实现一个简单的网站,在网站中实现用户的身份验证,创建用户,修改密码 还有限 ...
- appium学习【二】:用try捕获异常后,用例的执行结果为pass
appium学习[二]:用try捕获异常后,用例的执行结果为pass 参考文章: (1)appium学习[二]:用try捕获异常后,用例的执行结果为pass (2)https://www.cnblog ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
- tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报 分类: tensorflow(4) 目录(?)[+] 本笔记目的 ...
- Maven学习总结(二)——Maven项目构建过程练习
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验 ...
最新文章
- 暑期集训1:C++STL 练习题E:POJ-2431
- NodeJs端口被占用的情况
- IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)
- java trace优化_使用Arthas trace定位并优化接口响应慢的问题.md
- linux进入文件系统命令,卸载正在被访问的文件系统 - fuser命令
- C++知识点45——类继承中的类型转换与访问权限控制(上)
- python进阶:JSON与枚举
- 超凡先锋怎么进入维护服务器,超凡先锋新手教程怎么过 新手教程攻略_超凡先锋...
- android外接键盘打汉字,Android在外接物理键盘时,如何强制调用系统软键盘
- TensorFlow2.0(二)--Keras构建神经网络分类模型
- 深度优先搜索——自然数的拆分问题(洛谷 P2404)
- KinectFusion: Real-Time Dense Surface Mapping and Tracking
- RHEL7 -- 使用Chrony设置时间与时钟服务器同步
- mysql指定库执行sql语句_对多个mysql的一部分库进行执行sql语句
- js实现的万年历显示
- MVC+knockoutjs知识点总结
- 人脸识别技术及其各种用例
- Git统计一段时间内代码的修改量
- 常用DEBUG命令及使用详解
- 深度:国产FPGA研究框架
热门文章
- Linux笔记-iptables开放指定端口,开放ICMP协议,其他端口禁止访问
- IDEA中报错“cannot resolve symbol XXX”,但编译正确可以运行
- Web前端笔记-使用Webpack调用echarts画图
- Qt工作笔记-自定义菜单(右键菜单)
- 安卓 linux 街机 dc,DC最强的街机模拟器
- web文件服务器 开源,10个开源的基于WEB的文件管理器
- 编译3.0的linux内核,Ubuntu 编译 Linux 3.0-rc4 内核
- ise verilog多模块编译_如何使用ISE高效开发Verilog项目(新手)
- mongodb 分组聚合_mongodb 聚合命令
- java反编译工具_安卓逆向之反编译工具的使用