• [转+修缮] Objective-C 简介


    在iOS的开发中使用的是Objective C语言,它是一种面向对象的语言

    在Objective-C里如何定义一个类, 例子:

     1 #import <Foundation/Foundation.h>
     2 @interface Student : NSObject{
     3     NSString* name;
     4     int age;
     5 }
     6 - (NSString*) name;
     7 - (int) age;
     8 - (void) setName: (NSString*) input;
     9 - (void) setAge: (int) input;
    10 @end;

    格式是:

    @interface 类名:父类名{  
                  变量定义;  
    }  
    方法定义;  
    @end;  

    类定义从@interface开始,它表示了类的接口声明,冒号后指定了该类的父类,@end;表示类定义结束。

    Objective-c的类定义中类的变量定义与方法定义是分开的,花括号内写变量的定义,花括号外写该类的方法定义

    方法定义比较独特,具体格式如下:

          -           (void)         setName         :                  (NSString)   input;

    方法类型       返回类型        方法名称      方法接受参数        参数类型     参数名

    通用格式如下:

    +/- (返回类型) 方法名称1:(参数1的类型) 参数1  方法名称2:(参数2的类型) 参数2   ... 

    前面带有减号(-) 的方法为实例方法,必须使用类的实例才可以调用的。

    对应的有+号, 代表是类的静态方法,不需要实例化即可调用。

    一个参数的方法定义:

    -  (void) setName: (NSString*) input;

    二个参数的方法定义:

    - (void) setName: (NSString*) input  andSecondName:(NSString*) input1;

     

    好了,搞明白了@interface 和 @end 是什么, 就可以往下看了.

     

    接口和实现

    在Objective里完成的文件被称为界面文件,该类文件的定义被称为实现文件。

    一个简单的界面文件MyClass.h将如图所示:

    1 @interface MyClass:NSObject{ 
    2 // 类变量声明
    3 }
    4 // 类属性声明
    5 // 类方法和声明
    6 @end

    执行MyClass.m文件,如下所示

    1 @implementation MyClass
    2 // 类方法定义
    3 @end

     

    创建对象

    完成创建对象,如下所示

     MyClass  *objectName = [[MyClass alloc]init] ;

     

    方法(methods)

    Objective C中声明的方法如下所示:

    -(returnType)methodName:(typeName) variable1 :(typeName)variable2;

    下面显示了一个示例:

    -(void)calculateAreaForRectangleWithLength:(CGfloat)length 
    andBreadth:(CGfloat)breadth;

    你可能会想什么是andBreadth字符串,其实它的可选字符串可以帮助我们阅读和理解方法,尤其是当方法被调用的时候。

    在同一类中调用此方法,我们使用下面的语句。

    [self calculateAreaForRectangleWithLength:30 andBreadth:20];

    正如上文所说的andBreath使用有助于我们理解breath是20。Self用来指定它是一个类的方法。

    类方法(class methods)

    直接而无需创建的对象,可以访问类方法。他们没有任何变量和它关联的对象。示例如下:

    +(void)simpleClassMethod;

    它可以通过使用类名(假设作为MyClass类名称)访问,如下所示:

    [MyClass simpleClassMethod];

    实例方法

    可以创建的类的对象后只访问实例方法,内存分配到的实例变量。实例方法如下所示:

    -(void)simpleInstanceMethod; 

    创建类的对象后,它可以访问它。如下所示:

    MyClass  *objectName = [[MyClass alloc]init] ;
    [objectName simpleInstanceMethod];

    Objective C的重要数据类型

    序号数据类型
    1 NSString字符串
    2 CGfloat 浮点值的基本类型
    3 NSInteger 整型
    4 BOOL 布尔型

    打印日志

    NSLog用于打印一份声明,它将打印在设备日志和调试版本的控制台和分别调试模式上。

    如 

    NSlog(@"");

    控制结构

    除了几个增补的条款外,大多数的控制结构与C以及C++相同

    属性(properties)

    用于访问类的外部类的变量属性

    比如:@property(非原子、强)NSString*myString

    访问属性

    可以使用点运算符访问属性,若要访问上一属性可以执行以下操作

    self.myString = @"Test";

    还可以使用set的方法,如下所示:

    [self setMyString:@"Test"];

    类别(categories)

    类用于将方法添加到现有类。通过这种方法可以将方法添加到类,甚至不用执行文件,就可以在其中定义实际的类。MyClass的样本类别,如下所示:

    @interace MyClass(customAdditions)
    - (void)sampleCategoryMethod;
    @end
    
    @implementation MyClass(categoryAdditions)
    
    -(void)sampleCategoryMethod{
       NSLog(@"Just a test category");
    }

    数组(arrays)

    NSMutable和NSArray 是ObjectiveC中使用的数组类,前者是可变数组,后者是不可变数组。如下:

    NSMutableArray *aMutableArray = [[NSMutableArray alloc]init];
    [anArray addObject:@"firstobject"];
    NSArray *aImmutableArray = [[NSArray alloc]
    initWithObjects:@"firstObject",nil];

    词典

    NSMutableDictionary和NSDictionary是Objective中使用的字典,前者可变词典,后者不可变词典,如下所示:

    NSMutableDictionary*aMutableDictionary = [[NSMutableArray alloc]init];
    [aMutableDictionary setObject:@"firstobject" forKey:@"aKey"];
    NSDictionary*aImmutableDictionary= [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:
    @"firstObject",nil] forKeys:[ NSArray arrayWithObjects:@"aKey"]];
  • 相关阅读:
    nginx日志模块及日志定时切割
    Nginx学习笔记
    Nginx负载均衡和反向代理
    python--inspect模块
    Python--sys
    Docker 中 MySQL 数据的导入导出
    分布式监控-open-falcon
    《转载》脚本实现从客户端服务端HTTP请求快速分析
    《转载》日志大了,怎么办?用我的日志切割脚本吧!
    《MySQL》一次MySQL慢查询导致的故障
  • 原文地址:https://www.cnblogs.com/alpharobert/p/5491370.html
Copyright © 2020-2023  润新知