iOS - OC 基本语法

简介: 1、常见文件扩展名 .c C 语言源文件 .cc、.cpp C++ 语言源文件 .m Objective-C 源文件 .

1、常见文件扩展名

    .c               C 语言源文件
    .cc、.cpp        C++ 语言源文件
    .m               Objective-C 源文件
    .mm              Objective-C++ 源文件
    .h               头文件
    .pl              Perl 源文件
    .o               Object(编译后的)文件
        
    .app             可运行的应用程序(相当于 windows 中的 .exe)
    .dmg             OS X 上的光盘文件压缩包(相当于 windows 中的 ISO)
    .pkg             OS X 应用程序安装包(相当于 windows 中的 exe\msi 等)
    .ipa             iOS 应用程序安装包(安装到 iPhone\iPad 等设备上面)
        
    .xcodeproj       Xcode 的项目文件(双击可直接打开整个项目)
    .xcworkspace     Xcode 工作空间文件
    .plist           用于储存用户设置(类似于 windows 下的 .ini)
    .bundle          可认为是压缩后的文件夹(一种压缩文件)

2、命名规范

  • 按照约定,类名以大写字母开头,尽管没有要求这么做。
  • 实例变量、对象以及方法的名称,通常以小写字母开头。为了使程序具有可读性,名称中要用大写字母表示新单词的开头。
  • 一些程序员还使用下划线作为单词的分隔符。

  • 在 OC 中小写字母和大写字母是有区别的。

3、OC 数据类型

    char :  字符型
    int  :  整型    %zi   可打印无符号整形(NSUInteger)数据。%li  可打印有符号整形(NSInteger)数据。

    float  : 浮点型
    double : 双浮点型

    BOOL:   布尔型    YES、NO

    id  :   通用的对象类型,可以存储任何类型的对象,从某种意义说,它是一般对象类型。

                保存 OC 中任意对象的指针(void *): 泛型指针,保存任意类型的指针变量。
                类型转换运算符通常用于将一般 id 类型的对象转换成特定类的对象。

    instancetype :
                instancetype 在类型表示上,跟 id 一样,可以表示任何对象类型。
                instancetype 只能用在返回值类型上,不能像 id 一样用在参数类型上。
                instancetype 比 id 多一个好处:编译器会检测 instancetype 的真实类型。

    enum :枚举。在 OC 中可以将一系列值指派给一个变量。
                如:enum flag{false, true};

                要声明一个枚举类型的变量,仍需要用到关键字 enum,之后是枚举的类型名,最后是变量序列。
                    如:enum flag endOfData = true;
                    
                定义枚举数据类型时,可以省略数据类型的名称,定义类型可以将变量声明为特定枚举数据类型中的一个。
                    如:enum {false, true} endOfData;
        
                枚举标识符可以共享相同的值。
                    如:enum boolean {no = 0, false = 0, yes = 1, true = 1};

                OC 编译器实际上将枚举标识符作为整形常量来处理。

    typedef:定义数据类型。
    
                OC 允许编程者为数据类型另外指派一个名称。在这种情况下使用 typedef 语句的主要好处是增加了变量定义的可读性。

4、运算符

  • 1)位运算:位运算符可处理任何类型的整形值,但不能处理浮点值。

    • 按位与运算符:经常用于屏蔽预算,该运算符可以轻易的将数据项的特定位设置为 0 。
    • 按位或运算符:通常称为按位 OR,用于将数据项的特定位设为 1 。
    • 按位异或运算符:通常称为 XOR,不同为 1 ,相同为 0 。
    • 一次求反运算符:对运算数的位翻转。
    • 左移位运算符:超出数据项的高位的位将丢失,而从低位移入的值总为 0 。
    • 右移位运算符:从值的低位移出的位将丢失。把无符号的值向右移位总是左侧移入 0 。对有符号的值而言,如果符号位是 0(表示该值为正的),将移入 0;
      如果符号位是 1,那么在一些计算机上将移入 1(算数右移),而其他计算机上将移入 0(逻辑右移)。
  • 2)运算函数:
    • 开平方函数:

          double sqrt(double);

5、表达式

  • 1)循环结构

        for          语句 
        while        语句     
        do … while   语句 
        for … in     语句 
    
        break
        continue
  • 2)选择结构

        if         语句
        switch     语句
    
        … ? … :    条件运算语句,从右往左结合,可多极嵌套使用。
    
                    Xcode 支持如下多级运算符的非 ANSI 扩展语句:
                            condition ? : expression 在这个语句中对 condition 求值,若为 YES 则返回值为 condition 。
                        若 condition 值为 NO ,则返回值为 expression 。

6、程序编译

  • 1)预处理

    • 预处理程序实际上是在分析 OC 程序之前先处理这些语句。预处理程序语句使用井号(#)标记,这个符号必须是一行中的第一个非空格字符。

          #define :给符号名称指定程序常量
          #import :文件包含
          #ifdef、#endif、#else、#ifndef、#if、#elif :条件编译
          #undef :消除特定名称的定义

7、堆和栈的区别

  • 堆需要用户手动释放内存,而栈则是编译器自动释放内存
目录
相关文章
|
缓存 JavaScript iOS开发
iOS 逆向编程(十四)Cycript 语法入门
iOS 逆向编程(十四)Cycript 语法入门
226 0
|
Swift iOS开发
iOS OC混编Swift 后者无法走断点
iOS OC混编Swift 后者无法走断点
107 0
|
安全 数据安全/隐私保护 iOS开发
iOS 初探代码混淆(OC)
自己做iOS开发也有几年的时间了,平时做完项目基本就直接打包上传到Appstore上,然后做上架操作了。但是最近,客户方面提出了代码安全的要求。说是要做代码混淆,这方面的工作之前从来没有接触过。然后就上网查了一下,原来有很多应用程序都做了代码混淆。看来是我固步自封了......
iOS 初探代码混淆(OC)
|
缓存 JavaScript iOS开发
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
204 0
|
存储 Unix 编译器
|
存储 算法 iOS开发
|
安全 iOS开发
iOS开发 - 字面语法之数组注意事项
iOS开发 - 字面语法之数组注意事项
89 0
|
存储 安全 Swift
iOS - 巧用字面量语法
iOS - 巧用字面量语法
111 0
|
Swift iOS开发 容器
iOS 仿支付宝银行卡界面(支持Swift/OC)
在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?在网上找了许久也没有找到合适的,那就索性自己造轮子。
412 0
|
编解码 Swift iOS开发
iOS 应用之间的跳转(OC&Swift)
iOS 应用之间的跳转(OC&Swift)
1159 0
iOS 应用之间的跳转(OC&Swift)

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 6
    iOS各个证书生成细节
  • 7
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
  • 8
    iOS:应用程序的线程安全性
  • 9
    iOS开发-UIScrollView原理
  • 10
    iOS - Swift NSPoint 位置
  • 1
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
    9
  • 2
    iOS各个证书生成细节
    22
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    118
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    40
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    55
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    46
  • 7
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    40
  • 8
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    152
  • 9
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    310
  • 10
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    106