iOS - Objective C



iOS 开发中使用的语言是 Objective C。它是一种面向对象的语言,因此对于那些具有一定面向对象编程语言背景的人来说,它很容易学习。

接口和实现

在 Objective C 中,声明类的文件称为接口文件,定义类的文件称为实现文件

一个简单的接口文件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] ;

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

方法

在 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"];

类别

类别用于向现有类添加方法。通过这种方式,我们可以向我们甚至没有实现文件的类添加方法,这些文件定义了实际的类。我们类的示例类别如下所示:

@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"]];
广告