深度解析关于Objective-C小概念

移动开发 iOS
关于Objective-C小概念是本文要介绍的内容,主要是来了解Objective-C中的一些要注意的细节学习。一起来看详细内容。

关于Objective-C小概念是本文要介绍的内容,主要是来了解Objective-C中的一些要注意的细节学习。一起来看详细内容。

1、定义类: 在.h文件中,

@interface 类名:父类名  
          {  
       成员变量;  
          } 
  • 1.
  • 2.
  • 3.
  • 4.

1、成员函数;

@end; 
  • 1.

在.m文件中,@implementation 类名成员函数定义;

@end; 
  • 1.

2、成员函数定义:-(返回值类型)函数名:(参数类型)参数,...

-(void) setColor:(NSString*)newColor  
 {  
    Color=newColor;  
 }      
 -(void) setNumber:(int)newNumber  
 {  
    Number=newNumber;  
 } 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

3、实例化类:

myCar=[Car new];  
[myCar setColor:red];  
[myCar setNumber:Num]; 
  • 1.
  • 2.
  • 3.

4、@class指令:

当一个类中要使用另一个已经定义好的类时,用@class,若要用到其中的方法,则要#import这个类。

5、内存管理:

iphone操作系统不支持垃圾回收机制。

创建一个对象一般用alloc+init,也可用new;

alloc,copy,retain,release,autorelease;

6、Foundation框架:

@import <Foundation/Foundation.h> 
NSString类,NSMutableString类;  
NSArray类,NSMutableArray类;  
NSDictionary类,NSMutableDictionary类; 
  • 1.
  • 2.
  • 3.
  • 4.

7、存取器:

声明类变量时,可使其成为属性。@property int Number;

.m文件中,可加入@synthesize Number,自动生成setter和getter方法;

这样,便可用点操作符访问成员变量,car.Number=27;

8、创建对象:

 id 对象名=[类名 alloc];  
 [对象名 init];  
Boat *boat=[[Boat allco] init];  
 Boat *boat=[[Boat alloc] initWithNum:123  
                          Color:@"red"]; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

一般情况下,init时这样写:

-init  
{  
      if(self=[super init]){  
        //初始化操作  
      return self;  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

有参数时,

-(id) initWithNum:(int) Num  
      Color:(NSString*) Color; 
  • 1.
  • 2.

9、变量作用域:

  没有任何作用域限制时,默认为protected;

10、@try异常处理:

@try{}  
@catch(NSException *exception){NSLog(@"Catch exception name :%@; reason:%@;",  
                              [exception name],[exception reason]);}  
@finally{} 
  • 1.
  • 2.
  • 3.
  • 4.

11、类目与协议:

有时候需要在一个已经定义好的类中加入一些方法而不重写该类,可以使用类目(categories)。

如已定义一Circle类,CircleCal.h文件中,

@import "Circle.h"  
@interface Circle(CircleCal)  
-(float) AreaCal;  
-(float) LenCal;  
@end; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

CircleCal.m文件中,

#import "CircleCal.h"  
@implementation Circle(CircleCal)  
-(float) AreaCal{}  
-(float) LenCal{}  
@end; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

此时便可在main函数中调用新定义的函数;

ps:类目不能向类中添加实例变量;类目可以覆盖它所要扩展的类中的方法,不过应尽量避免;使用类目对一个类进行扩展时,同样会影响到该类的子类。

协议是一个方法列表。它声明了一系列方法而不予以实现。协议不是类本身,没有父类,而且不能定义成员变量。

@protocol Calculating  
-(void) CalculateArea;  
@end;  
@interface Rectangle:NSObject <Calculating>{} 
  • 1.
  • 2.
  • 3.
  • 4.

在定义Rectangle中的成员函数时,也要定义Calculating中的方法,这样才能调用。

@protocol有两个修饰符:@optional和@required,

被@optional修饰的方法,在采用该协议的类中可以选择不实现,而采用@required修饰的方法,则必须实现。默认为@required。

小结:深度解析关于Objective-C小概念的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-11 17:39:25

Objective-C笔试题

2011-07-29 16:08:31

Objective-C 内存

2011-08-10 18:07:29

Objective-C反射

2013-03-27 12:54:00

iOS开发Objective-C

2011-08-15 17:29:36

Objective-C构造函数

2011-08-05 15:46:32

Objective-C 程序设计

2011-07-20 13:34:37

Objective-C self.

2011-08-17 15:37:23

Objective-C垃圾收集

2011-08-04 15:14:39

Objective-C 数据类型

2013-06-20 10:40:32

Objective-C实现截图

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C

2011-08-04 16:46:03

Objective-C 声明

2011-07-26 10:50:50

Objective-C Selector

2011-08-04 15:52:48

Objective-C HTML

2011-08-02 13:16:36

Objective-C 语法 函数

2011-08-04 14:58:37

Objective-C Cocoa NSString

2011-08-04 11:15:46

Objective-C 构造函数 构造方法

2011-05-11 13:54:08

Objective-C

2011-05-11 15:45:50

内存管理Objective-C
点赞
收藏

51CTO技术栈公众号