• Objective-C知识总结(1)


    Objective-C简称OC,是一款可以开发Mac OS X平台和iOS平台应用程序的开发语言,目前最新的swift语言也可以开发以上两平台的应用。

    OC是面对对象的语言(OC面对对象语言特性请看之前的博客--->也可以点我!<---),在OC代码可以混入C语言代码,甚至是C++代码,也可以和swift进行混编。

    好了,简介就说这么多>_<

    先来个小问题:为什么OC要使用import引入头文件,import和include的区别?

    include 和 import 都是引入头文件

    import引入的头文件,可以防止重复包含

    include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题

    还记得怎么使用预处理指令防止重复包含嘛

    #ifndef Zhy
    #define Zhy
    
    // 函数的声明
    void test(); 
    
    #endif

    使用NSLog输出自带换行

    NSLog(@"Hello World!");

    OC中相对C语言多了一个BOOL类型用来保存逻辑值,YES(真 1)   NO(假  0)

    OC中的异常捕捉机制

       @try {
                // 有可能会出错的代码
                <#Code that can potentially throw an exception#>
            }
            @catch (NSException *exception) {
                // 错误的处理方法
                <#Handle an exception thrown in the @try block#>
                 NSLog(@" %@ ",exception);  // 打印出错误的信息
            }
            @finally {
                // 无论是否有错都会执行
               <#Code that gets executed whether or not an exception is thrown#>
            }

    OC中类的创建以及在哪里定义成员变量,类方法和对象方法的声明和实现

    // 人这个类的声明
    @interface Person : NSObject
    {
        // 成员变量
        NSString *_name;
        int _age;
    }
    // 对象方法的声明
    - (void)duixiangfangfa;
    // 类方法的声明
    + (void)leifangfa;
    @end
    // 人这个类的实现
    @implementation Person
    // 对象方法的实现
    - (void)duixiangfangfa
    {
        NSLog(@"这是对象方法的实现");
    }
    // 类方法的实现
    + (void)leifangfa
    {
        NSLog(@"这是类方法的实现");
    }
    @end

    说一下创建对象的语句

    Person *p = [Person new];

    [Person new] 做了三件事情

    1. 申请内存空间

    2. 给实例变量初始化

    3. 返回空间的首地址

    小问题:申请的空间在内存的哪个区?

    new 的时候申请的空间在内存的堆区(程序动态分配的内存空间)

    实例变量保存在堆区,指针p保存在栈区,对象方法保存在代码区

    堆区有一个_isa指针指向代码区,当对象要调用方法时,首先找p对应的堆区的空间,然后找到 _isa指针,再找到_isa指向的代码区的空间,然后到该空间中找 方法

     设计一个”学生“类

      1> 成员变量

      * 姓名

      * 生日

     1 #import <Foundation/Foundation.h>
     2 // 日期的结构体
     3 typedef struct {
     4     
     5     //
     6     int year;
     7     //
     8     int month;
     9     //
    10     int day;
    11     
    12 }MyDate;
    13 
    14 // Student类的声明
    15 @interface Student : NSObject
    16 {
    17     @public
    18   // 学生姓名
    19     NSString *_name;
    20     
    21   // 学生生日
    22     MyDate _birthday;  // 结构体变量
    23 }
    24 
    25 @end
    26 
    27 
    28 // Student类的实现
    29 @implementation Student
    30 
    31 @end
    32 
    33 
    34 int main(int argc, const char * argv[]) {
    35     @autoreleasepool {
    36         
    37         Student *stu = [Student new];
    38         stu->_name = @"阿衰";
    39         
    40         //第一种方法
    41         stu->_birthday =(MyDate){1983,12,12};
    42         //NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day);
    43         
    44         //第二种方法:定义一个结构体变量
    45         MyDate d1 = {1981,11,11};  //定义结构体变量的同时进行初始化
    46         stu->_birthday = d1;
    47         
    48         //第三种方法,逐个赋值
    49         stu->_birthday.year = 2014;
    50         stu->_birthday.month = 12;
    51         stu->_birthday.day = 11;
    52         
    53         NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day);
    54     }
    55     return 0;
    56 }

    这里主要说明的是调用结构体时的方法

    NSString类的用法

    NSString是OC中字符串处理的类

    NSString *s = @"zzzzzzzzzzzzzz ";
    
     NSString *s1 = [NSString stringWithFormat:@"%d",i];

    NSString字符串的长度

     NSString *s1 = @"zzz";
            NSUInteger len = [s1 length];  // 3
    // 中文字符在NSString中也占1个字节
  • 相关阅读:
    angularjs+webapi2 跨域Basic 认证授权(二)
    angularjs+webapi2 跨域Basic 认证授权(一)
    记录一些日常windows命令或操作技巧
    unable to locate nuget.exe
    Adobe Acrobat XI Pro闪退原因及解决办法
    货物移动BAPI:BAPI_GOODSMVT_CREATE报错提示“不能执行功能模块 MB_CREATE_GOODS_MOVEMENT”的原因
    ABAP中将Unicode字符串转换成中文的方法
    ABAP中时间戳的处理
    科学吵架修炼指南(摘自凤凰网)
    SAP Web Service简介与配置方法
  • 原文地址:https://www.cnblogs.com/melodyzhy/p/4671762.html
Copyright © 2020-2023  润新知