【IOS 开发】Objective - C 语法 之 流程控制(二)

简介: 【IOS 开发】Objective - C 语法 之 流程控制(二)

4. 循环控制


循环控制 :


-- break : 退出当层循环;


-- continue : 跳过该次循环, 执行下一次循环;


-- return : 直接返回函数, 不管有多少层, 直接返回;



代码示例 :


-- Object-C 代码 :



/*************************************************************************
    > File Name: 11-circleControl.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 三 12/ 3 00:40:44 2014
 ************************************************************************/
#import <Foundation/Foundation.h>
int main(int argc, char * argv[])
{
  @autoreleasepool {
  NSLog(@"break 控制 : ");
  //break 会 跳出 对应的当前一级的循环, 如果是嵌套循环, 只会跳出那一层循环
  for(int i = 0; i < 3; i ++)
  {
    for(int j = 0; j < 2; j++)
    {
    if(i == 1 && j == 1)
    {
      NSLog(@"i = 1, j = 1 中断本层循环, 执行 i = 2 的情况");
      break;
    }
    NSLog(@"i = %d, j = %d", i, j);
    }
  }
  NSLog(@"\n");
  NSLog(@"continue 控制 : ");
  for(int i = 0; i < 3; i ++)
  {
    if(i == 1)
    {
    NSLog(@"i == 1, 终止本次执行, 执行 i = 2 情况");
    continue;
    }
    NSLog(@"i = %d", i);
  }
  NSLog(@"\n");
  NSLog(@"return 控制 : ");
  for(int i = 0; i < 3; i ++)
  {
    for(int j = 0; j < 2; j ++)
    {
    if(i == 1 && j == 1)
    {
      NSLog(@"i == 1 && j == 1, 直接退出函数, 不再执行下面的语句");
      return 0;
    }
    NSLog(@"i = %d, j = %d", i, j);
    }
  }
  }
}





-- 执行结果 :



octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-circleControl.m 
octopus-2:oc octopus$ ./a.out 
2014-12-03 01:06:35.669 a.out[1360:507] break 控制 : 
2014-12-03 01:06:35.671 a.out[1360:507] i = 0, j = 0
2014-12-03 01:06:35.671 a.out[1360:507] i = 0, j = 1
2014-12-03 01:06:35.672 a.out[1360:507] i = 1, j = 0
2014-12-03 01:06:35.672 a.out[1360:507] i = 1, j = 1 中断本层循环, 执行 i = 2 的情况
2014-12-03 01:06:35.673 a.out[1360:507] i = 2, j = 0
2014-12-03 01:06:35.673 a.out[1360:507] i = 2, j = 1
2014-12-03 01:06:35.674 a.out[1360:507] 
2014-12-03 01:06:35.674 a.out[1360:507] continue 控制 : 
2014-12-03 01:06:35.675 a.out[1360:507] i = 0
2014-12-03 01:06:35.675 a.out[1360:507] i == 1, 终止本次执行, 执行 i = 2 情况
2014-12-03 01:06:35.675 a.out[1360:507] i = 2
2014-12-03 01:06:35.676 a.out[1360:507] 
2014-12-03 01:06:35.676 a.out[1360:507] return 控制 : 
2014-12-03 01:06:35.676 a.out[1360:507] i = 0, j = 0
2014-12-03 01:06:35.677 a.out[1360:507] i = 0, j = 1
2014-12-03 01:06:35.677 a.out[1360:507] i = 1, j = 0
2014-12-03 01:06:35.678 a.out[1360:507] i == 1 && j == 1, 直接退出函数, 不再执行下面的语句






5. goto 语句



goto 用法 :


-- 定义标签 : 在程序任意位置打上标签, 例如 "start : ";


-- 跳转标签 : 使用 "goto 标签;" 语句, 跳转到指定位置;



goto 常用场景 : 从内层循环跳到指定的外层循环, 或者直接跳出多重嵌套循环, 还要继续执行下面的语句;



代码示例 :


-- Object-C 代码 :



/*************************************************************************
    > File Name: 11-goto.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 三 12/ 3 01:09:55 2014
 ************************************************************************/
#import <Foundation/Foundation.h>
int main(int argc, char * argv[])
{
  @autoreleasepool {
  NSLog(@"goto 代替 do while 循环 : "); 
  int k = 0;
  circle :
  NSLog(@"k = %d", k++);
  if(k < 3)
  {
    goto circle;
  }
  NSLog(@"\n");
  NSLog(@"goto 跳出本层循环");
  for(int i = 0; i < 3; i ++)
  {
    for(int j = 0; j < 2; j ++)
    {
    if(i == 1 && j == 1)
    {
      NSLog(@"此时 i == 1 && j == 1跳出到 外层循环, 执行 i = 2 的情况");
      goto out;
    }
    NSLog(@"i = %d, j = %d", i, j);
    }
    out :
    NSLog(@"内存循环执行完毕");
  }
  NSLog(@"\n");
  NSLog(@"goto 跳出所有循环");
  for(int i = 0; i < 3; i ++)
  {
    for(int j = 0; j < 2; j ++)
    {
    if(i == 1 && j == 1)
    {
      NSLog(@"此时 i == 1 & j == 1 跳出所有循环");
      NSLog(@"i = %d, j = %d", i, j);
    }
    }
  }
  over : 
  NSLog(@"所有循环执行完毕");
  }
}







-- 执行结果 :



octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 11-goto.m 
octopus-2:oc octopus$ ./a.out 
2014-12-03 01:26:36.027 a.out[1475:507] goto 代替 do while 循环 : 
2014-12-03 01:26:36.028 a.out[1475:507] k = 0
2014-12-03 01:26:36.029 a.out[1475:507] k = 1
2014-12-03 01:26:36.029 a.out[1475:507] k = 2
2014-12-03 01:26:36.029 a.out[1475:507] 
2014-12-03 01:26:36.030 a.out[1475:507] goto 跳出本层循环
2014-12-03 01:26:36.030 a.out[1475:507] i = 0, j = 0
2014-12-03 01:26:36.031 a.out[1475:507] i = 0, j = 1
2014-12-03 01:26:36.031 a.out[1475:507] 内存循环执行完毕
2014-12-03 01:26:36.031 a.out[1475:507] i = 1, j = 0
2014-12-03 01:26:36.032 a.out[1475:507] 此时 i == 1 && j == 1跳出到 外层循环, 执行 i = 2 的情况
2014-12-03 01:26:36.032 a.out[1475:507] 内存循环执行完毕
2014-12-03 01:26:36.033 a.out[1475:507] i = 2, j = 0
2014-12-03 01:26:36.033 a.out[1475:507] i = 2, j = 1
2014-12-03 01:26:36.033 a.out[1475:507] 内存循环执行完毕
2014-12-03 01:26:36.034 a.out[1475:507] 
2014-12-03 01:26:36.034 a.out[1475:507] goto 跳出所有循环
2014-12-03 01:26:36.035 a.out[1475:507] 此时 i == 1 & j == 1 跳出所有循环
2014-12-03 01:26:36.035 a.out[1475:507] i = 1, j = 1
2014-12-03 01:26:36.035 a.out[1475:507] 所有循环执行完毕


 


目录
相关文章
|
11月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
301 3
|
3月前
|
安全 数据安全/隐私保护 Android开发
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
540 75
|
1月前
|
缓存 安全 数据处理
Objective-C开发:从HTTP请求到文件存储的实战
Objective-C开发:从HTTP请求到文件存储的实战
|
7月前
|
设计模式 前端开发 Swift
探索iOS开发:Swift与Objective-C的较量
在这篇文章中,我们将深入探讨iOS开发的两大编程语言——Swift与Objective-C。我们将分析这两种语言的特性、优势和局限性,并讨论它们在现代iOS开发中的应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和建议。
129 3
|
7月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
264 0
|
11月前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
167 2
|
11月前
|
数据安全/隐私保护 iOS开发 开发者
uniapp IOS从打包到上架流程(详细简单) 原创
uniapp IOS从打包到上架流程(详细简单) 原创
335 1
|
11月前
|
算法 编译器 Swift
【Swift开发专栏】Swift与Objective-C的对比
【4月更文挑战第30天】Swift与Objective-C对比:Swift语法简洁,支持元组、泛型和闭包,提高可读性;性能优化,使用LLVM编译器,与Objective-C兼容,便于迁移项目;生态系统活跃,苹果官方支持,丰富资源库。Objective-C虽历史悠久,但逐渐边缘化。对于新项目和开发者,Swift是更佳选择,驱动iOS开发创新。
734 0
|
11月前
|
数据管理 API 开发工具
Objective-C网络请求开发的高效实现方法与技巧
Objective-C网络请求开发的高效实现方法与技巧
|
11月前
|
JSON 监控 安全
使用Objective-C开发的局域网监控微信的追踪系统
在当今数字化时代,随着社交软件的普及,人们越来越多地依赖于微信等应用来进行交流。然而,对于一些特定的情况,例如家长想要监控孩子的聊天记录,或者企业需要监督员工的通讯内容,开发一款能够监控微信的追踪系统显得尤为重要。在本文中,我们将介绍如何使用Objective-C语言来开发一款局域网监控微信的追踪系统,并且提供一些代码示例。
209 0