前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1.了解Objective-C语言

1.了解Objective-C语言

作者头像
用户1941540
发布2018-05-11 13:24:34
7080
发布2018-05-11 13:24:34
举报
文章被收录于专栏:ShaoYLShaoYL

了解Objective-C语言

** Objective-C 语言是“消息结构”(messaging structure) 类似C++ 、Java 是“函数调用”(function calling)**

// messaging structure (Objective-C)
Object *obj = [Object new];
[obj performWith:parameter1 and:parameter2];

// function calling (C++)
Object *obj = new Object;
obj->perform(parameter1,parameter2);
  • 区别在于:使用消息结构的语言,其运行时所应执行的代码由运行环境决定,函数调用的语言,由编译器决定。
  • 消息结构执行的方法,总是在运行时才去查找所要执行的方法,甚至不关心接收消息的对象是何种类型;其过程叫做“动态绑定”。

** Objective-C对象声明 **

// 声明一个名为 someSting 的变量,其类型是 NSString * 。
NSString *someString = @"The String";

// 此 someSting 为指向NSString 的指针。
  • 所有 Objective-C 语言的对象都必须像以上声明,因为对象所占==内存==总是分配在“堆空间”,而绝不会分配在“栈”上。不能在栈中分配 Objective-C 对象。
NSString someString;
// error :interface type cannot be statically allocated
  • 有时会遇到定义不含 * 的变量,他们可能会使用“栈空间”,这些变量所保存的不是Objective-C对象。比如 CGRect;
CGRect frame;
frame.origin.x = 0.0f;
frame.origin.y = 10.0f;
frame.size.width = 100.0f;
frame.size.height = 150.0f;

// CGRect 是 C 结构体,其定义是:
struct CGRect {
    CGPoint origin;
    CGSize size;
};
type struct CGRect CGRect; 
  • 整个系统架构都在使用这种结构体,因为如果改用 对象来做的话,性能会受影响。与创建结构体相比,创建对象还需要额外开销,例如分配及释放堆内存等,如果只需保存 int、float、double、chat、等“非对象类型”,那么通常使用CGRect这种结构体就可以了。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 了解Objective-C语言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档