• Object-C 自学笔记


    1.基本变量类型

    类型 标示符 输出格式
    整形 int %i
    浮点 float %f
    双精度 double %g
    单字符 char %c

    以上是基本类型,除此之外还有long, long long int等等类型,还有一个比较特殊的id类型,后面会介绍id类型

    2. 基本算术,条件,循环 和C,C++基本一致

    3. 注释方式

    单行注释: // 多行注释: /* */

    4.基本输出,日志打印

    NSLog(@"使用NSLog进行日志的输出");

    5.函数的定义

    几种函数定义格式

    • 无参函数: -(return_type) function_name;
    • 单个参数: -(return_type) function_name:(type)param;
    • 多个参数: -(return_type) function_name:(type)param_1 [function_name](type)param_2;
      []为可写或者不写,如果有多个参数用空格进行分割 格式为[function_name](type)param,函数以;结尾
    //例子 函数要放到class下才能使用
    -(int) add:(int)a (int)b
    {
        return a + b;
    }
    

    6.类的定义

    @interface class_name : super_class
    
    @property int a, b;  // 这样会自动生成SetA,A这两个函数,使用@property定义的变量需要在声明或者说实现里面@implementation里面使用@synthesize生成器生成
    @class XYPoint;  /// 告诉编译器XYPoint是一个class
    
    // 下面是函数的定义
    -(void) setNameIndex:(int)n;
    ...
    
    @end
    

    7.类的实现

    @implementation class_name
    
    @synthesize a, b; // 配合@property使用
    
    -(void) setNameIndex:(int)n
    {
        a = n;
    }
    
    ...
    @end
    

    类名中有一个比较有意思的术语:抽象类(abstract)或者抽象超类(abstract superclasses),在该类中定义了方法和实例变量,但是不希望你直接从该类创建实例

    8. 动态绑定和id类型

    id datetype;
    datetype = class_1_val;
    datetype = class_2_val;
    

    id类型可以动态的绑定不同的类类型的变量来更改他指向的内容。我尝试了一下,貌似自带的那些int,double类型不能转换成id类型,用id类型绑定数据后,使用的方法需要在运行时进行检查。

    9. 异常处理

    // 格式
    @try{
        ...
    }
    @catch(NSException *exception){
        ...
    }
    
    

    10. 子类对父类方法的调用

    return_type val = [super func_name];

    11. 作用域指令

    @protected
    @private
    @public
    @package ---> 这个作用域不是很清楚,书上的解释是对于64位映像,可以实现该类的映像中的任何地方访问这个实例变量Object-c特有的作用域

    12. 静态变量,枚举变量,typedef的使用和C++一致

    13. 分类

    所谓分类其实就是把一个类里面的东西拆分成多个类

    /// 原本的类
    @interface Fraction : NSObject
    @property width, height;
    
    -(void)setW:(int)w setH:(int)h;
    @end
    
    /// 分类后的连个类
    @interface Fraction : NSObject
    @property width, height;
    
    @end
    
    @interface Fraction(OperatorClass)  // 这里创建了一个新的类OperatorClass
    -(void)setW:(int)w setH:(int)h;
    @end
    
    /// 这两个类的功能和之前的那个类功能完全相同,但是根据需要分成了一个定义实例变量类和具体操作方法类
    

    14 协议

    协议是多个类共享的一个方法列表。协议中列出的方法是没有实现的,需要其他人来实现

    协议定义格式:

    @protocol protocol_name
    -(void) paint;
    @optional // 之后的协议是否实现可以自由选择
    -(void) outline;
    @required  // 之后的协议必须实现
    -(void) shadow;
    @end
    
  • 相关阅读:
    抽象工厂与工厂方法的区别
    工作那些年的事兒
    抽象工廠與工廠方法的區別
    Dot Net设计模式—MVC模式
    Log4Net配置
    FileStream的使用
    asp.net用户检测的两种方式
    SWFUpload无刷新文件批量上传
    页面生命周期
    Lambda表达式与匿名方法
  • 原文地址:https://www.cnblogs.com/zjzyh/p/4962502.html
Copyright © 2020-2023  润新知