深度解析關(guān)于Objective-C小概念
關(guān)于Objective-C小概念是本文要介紹的內(nèi)容,主要是來了解Objective-C中的一些要注意的細(xì)節(jié)學(xué)習(xí)。一起來看詳細(xì)內(nèi)容。
1、定義類: 在.h文件中,
- @interface 類名:父類名
- {
- 成員變量;
- }
1、成員函數(shù);
- @end;
在.m文件中,@implementation 類名成員函數(shù)定義;
- @end;
2、成員函數(shù)定義:-(返回值類型)函數(shù)名:(參數(shù)類型)參數(shù),...
- -(void) setColor:(NSString*)newColor
- {
- Color=newColor;
- }
- -(void) setNumber:(int)newNumber
- {
- Number=newNumber;
- }
3、實例化類:
- myCar=[Car new];
- [myCar setColor:red];
- [myCar setNumber:Num];
4、@class指令:
當(dāng)一個類中要使用另一個已經(jīng)定義好的類時,用@class,若要用到其中的方法,則要#import這個類。
5、內(nèi)存管理:
iphone操作系統(tǒng)不支持垃圾回收機(jī)制。
創(chuàng)建一個對象一般用alloc+init,也可用new;
alloc,copy,retain,release,autorelease;
6、Foundation框架:
- @import <Foundation/Foundation.h>
- NSString類,NSMutableString類;
- NSArray類,NSMutableArray類;
- NSDictionary類,NSMutableDictionary類;
7、存取器:
聲明類變量時,可使其成為屬性。@property int Number;
.m文件中,可加入@synthesize Number,自動生成setter和getter方法;
這樣,便可用點操作符訪問成員變量,car.Number=27;
8、創(chuàng)建對象:
- id 對象名=[類名 alloc];
- [對象名 init];
- Boat *boat=[[Boat allco] init];
- Boat *boat=[[Boat alloc] initWithNum:123
- Color:@"red"];
一般情況下,init時這樣寫:
- -init
- {
- if(self=[super init]){
- //初始化操作
- return self;
- }
有參數(shù)時,
- -(id) initWithNum:(int) Num
- Color:(NSString*) Color;
9、變量作用域:
沒有任何作用域限制時,默認(rèn)為protected;
10、@try異常處理:
- @try{}
- @catch(NSException *exception){NSLog(@"Catch exception name :%@; reason:%@;",
- [exception name],[exception reason]);}
- @finally{}
11、類目與協(xié)議:
有時候需要在一個已經(jīng)定義好的類中加入一些方法而不重寫該類,可以使用類目(categories)。
如已定義一Circle類,CircleCal.h文件中,
- @import "Circle.h"
- @interface Circle(CircleCal)
- -(float) AreaCal;
- -(float) LenCal;
- @end;
CircleCal.m文件中,
- #import "CircleCal.h"
- @implementation Circle(CircleCal)
- -(float) AreaCal{}
- -(float) LenCal{}
- @end;
此時便可在main函數(shù)中調(diào)用新定義的函數(shù);
ps:類目不能向類中添加實例變量;類目可以覆蓋它所要擴(kuò)展的類中的方法,不過應(yīng)盡量避免;使用類目對一個類進(jìn)行擴(kuò)展時,同樣會影響到該類的子類。
協(xié)議是一個方法列表。它聲明了一系列方法而不予以實現(xiàn)。協(xié)議不是類本身,沒有父類,而且不能定義成員變量。
- @protocol Calculating
- -(void) CalculateArea;
- @end;
- @interface Rectangle:NSObject <Calculating>{}
在定義Rectangle中的成員函數(shù)時,也要定義Calculating中的方法,這樣才能調(diào)用。
@protocol有兩個修飾符:@optional和@required,
被@optional修飾的方法,在采用該協(xié)議的類中可以選擇不實現(xiàn),而采用@required修飾的方法,則必須實現(xiàn)。默認(rèn)為@required。
小結(jié):深度解析關(guān)于Objective-C小概念的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!