iOS - Objective-C

  • 简述

    IOS 开发中使用的语言是objective C。它是一种面向对象的语言,因此对于那些具有一些面向对象编程语言背景的人来说会很容易。
  • 接口和实现

    在 Objective C 中,完成类声明的文件称为 interface file 定义类的文件称为 implementation file.
    一个简单的接口文件 MyClass.h 如下所示 -
    
    @interface MyClass:NSObject { 
       // class variable declared here
    }
    // class properties declared here
    // class methods and instance methods declared here
    @end
    
    实施文件 MyClass.m 将如下 -
    
    @implementation MyClass
       // class methods defined here
    @end
    
  • 对象创建

    对象创建完成如下 -
    
    MyClass  *objectName = [[MyClass alloc]init] ;
    
  • 方法

    方法在objective C 中声明如下 -
    
    -(returnType)methodName:(typeName) variable1 :(typeName)variable2;
    
    一个例子如下所示。
    
    -(void)calculateAreaForRectangleWithLength:(CGfloat)length 
    andBreadth:(CGfloat)breadth;
    
    你可能想知道是什么 andBreadth字符串是为了;实际上它是一个可选的字符串,它可以帮助我们轻松阅读和理解该方法,尤其是在调用时。要在同一个类中调用此方法,我们使用以下语句 -
    
    [self calculateAreaForRectangleWithLength:30 andBreadth:20];
    
    如上所述,andBreadth 的使用帮助我们理解广度是 20。self 用于指定它是一个类方法。

    类方法

    可以直接访问类方法,而无需为类创建对象。它们没有任何与之关联的变量和对象。一个例子如下所示。
    
    +(void)simpleClassMethod;
    
    可以通过使用类名(假设类名为 MyClass)来访问它,如下所示 -
    
    [MyClass simpleClassMethod];
    

    实例方法

    只有在为类创建对象后才能访问实例方法。内存分配给实例变量。下面显示了一个示例实例方法。
    
    -(void)simpleInstanceMethod; 
    
    可以在为类创建对象后访问它,如下所示 -
    
    MyClass  *objectName = [[MyClass alloc]init] ;
    [objectName simpleInstanceMethod];
    
  • Objective C 中的重要数据类型

    序号 数据类型
    1
    NSString
    它用于表示字符串。
    2
    CGfloat
    它用于表示浮点值(也允许正常浮点数,但最好使用 CGfloat)。
    3
    NSInteger
    它用于表示整数。
    4
    BOOL
    它用于表示布尔值(YES 或 NO 是允许的 BOOL 类型)。
  • 打印日志

    NSLog - 用于打印语句。它将分别在发布和调试模式下打印在设备日志和调试控制台中。例如,
    
    NSlog(@"");
    
  • 控制结构

    大多数控制结构与 C 和 C++ 中的相同,除了像 for in 语句这样的一些添加。
  • 特性

    对于访问类的外部类,使用变量属性。例如,
    
    @property(nonatomic , strong) NSString *myString;
    

    访问属性

    您可以使用点运算符来访问属性。要访问上述属性,我们将执行以下操作。
    
    self.myString = @"Test";
    
    您还可以使用 set 方法如下 -
    
    [self setMyString:@"Test"];
    
  • 类别用于向现有类添加方法。通过这种方式,我们可以将方法添加到我们甚至没有定义实际类的实现文件的类中。MyClass的示例类别如下 -
    
    @interface MyClass(customAdditions)
    - (void)sampleCategoryMethod;
    @end
    @implementation MyClass(categoryAdditions)
    -(void)sampleCategoryMethod {
       NSLog(@"Just a test category");
    }
    
  • 数组

    NSMutableArray 和 NSArray 是objective C 中使用的数组类。顾名思义,前者是可变的,后者是不可变的。一个例子如下所示。
    
    NSMutableArray *aMutableArray = [[NSMutableArray alloc]init];
    [anArray addObject:@"firstobject"];
    NSArray *aImmutableArray = [[NSArray alloc]
    initWithObjects:@"firstObject",nil];
    
  • 字典

    NSMutableDictionary 和 NSDictionary 是objective C 中使用的字典类。顾名思义,前者是可变的,后者是不可变的。一个例子如下所示。
    
    NSMutableDictionary *aMutableDictionary = [[NSMutableArray alloc]init];
    [aMutableDictionary setObject:@"firstobject" forKey:@"aKey"];
    NSDictionary*aImmutableDictionary= [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:
    @"firstObject",nil] forKeys:[ NSArray arrayWithObjects:@"aKey"]];