博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oc-基本语法
阅读量:6839 次
发布时间:2019-06-26

本文共 2464 字,大约阅读时间需要 8 分钟。

一、第一个oc程序

#import 
int main(int argc, const char * argv[]){ NSLog(@"Hello, Objective-C"); return 0;}

运行,控制台输出

 

二、声明变量使用类型关键字(int/float/long/BOOL/char等)

#import 
int main(int argc, const char * argv[]){ int num = 100; NSLog(@"Number is: %i", num); return 0;}

运行,控制台输出

JS中声明变量只用var,无论何种数据类型。

 

三、块级作用域

#import 
int main(int argc, const char * argv[]){ int num = 100; if (num > 99) { int secondNum = 200; NSLog(@"Number is: %i", num); NSLog(@"Number is: %i", secondNum); } NSLog(@"Number is: %i", num); NSLog(@"Number is: %i", secondNum); // 错误,编译器会提示 return 0;}

JS中没有块级作用域。 

 

四、static关键字

前面的局部变量通常都在每次程序进入该局部变量的作用域时分配并在离开时释放。这类存储称为自动存储(默认关键字auto)。

static关键字会在声明变量的时候分配内存,在程序运行期间只分配一次内存。之后再访问时,实际都是在访问原先分配的内存。这适合用于存储创建时使用大量的资源,并且不常改变的局部变量。

void func() {    static Expensive * p = [[Expensive alloc] init];    [p doSomeOp];}int main(int argc, const char * argv[]){    func(); // 第一次调用时创建 p    func(); // 第二次调用,此时p已存在,不会再次创建    return 0;}

因为全局变量默认位于全局作用域中,所以其行为和静态变量一样。也就是说,它们只分配一次内存,并在整个程序运行期间保持不变。

JS中,未在function内声明的或未使用var声明的变量都是全局变量。

 

五、const关键字

const同样会修改所声明变量的内存行为,它所修饰的变量是只读的,即第一次初始化后它的值将不能改变。通常用来声明常量

#import 
int main(int argc, const char * argv[]){ const NSString *str = @"BeiJing"; str = @"ShangHai"; // 会产生一个编译错误 NSLog(@"dd, %@", str); return 0;}

JS规范ES6中也增加了关键字,Firefox/Chrome/Safari的最新版已经支持。node v0.8+ 也支持。

 

六、结构体

结构体算是一种复合数据类型,对象也是。复合数据类型由基本类型组成。定义结构体使用struct关键字

#import 
int main(int argc, const char * argv[]){ // 定义一个结构体 struct Point { int x; int y; }; // 使用结构体类型 struct Point p1; struct Point p2; // 赋值使用点操作符 p1.x = 0; p1.y = 0; p2.x = 1; p2.y = 1; // 假设有个写好的函数moveFromTo moveFromTo(p1, p2); // 从坐标中心点移动到(1,1)点 return 0;}

JS没有所谓的结构体,但这里的点操作符类似与JS对象取属性操作符。OC对象调用时却不是使用点操作符。

 

七、类型定义 typedef (type definition)

结构体每次使用时都需要输入struct Point,很无聊。typedef则省去了该步骤,更简洁。

#import 
int main(int argc, const char * argv[]){ // 定义一个类型 typedef struct{ int x; int y; } Point; // 使用类型, 省去了struct Point p1; Point p2; // 赋值使用点操作符 p1.x = 0; p1.y = 0; p2.x = 1; p2.y = 1; // 假设有个写好的函数moveFromTo moveFromTo(p1, p2); // 从坐标中心点移动到(1,1)点 return 0;}

这里,Point变为了“一等类型”,和int一样在任何地方都可以用。注意,和struct一样定义的是纯数据类型,没有操作(方法)。

JS没有typedef(倒是有一个typeof), JS的function可以来定义一个纯数据(this, prototype挂基本类型)。

 

八、

 

转载地址:http://blwul.baihongyu.com/

你可能感兴趣的文章
mariadb安装和使用
查看>>
Nginx基础
查看>>
网络, Nginx
查看>>
渐进式框架
查看>>
区块链教程Fabric1.0源代码分析Peer peer channel命令及子命令实现
查看>>
经典的网络安全技术
查看>>
学习Kali Linux必须知道的几点
查看>>
数字断路器获得商用认证
查看>>
N35-第九周作业-张同学
查看>>
小米Max怎么刷入开发版获得root超级权限
查看>>
win7安装mysql-5.7.18
查看>>
go语言for的三种形式
查看>>
Python mysql
查看>>
zabbix
查看>>
Android的资源管理器的创建过程
查看>>
[软件项目管理] BCWS、BCWP、ACWP的理解
查看>>
错误:Unsupported major.minor version 51.0(jdk版本错误)
查看>>
关于网站
查看>>
CMS之图片管理(3)
查看>>
linux下jdk/maven/tomcat
查看>>