9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 知識大全 > 知識百科 > 百科知識 > ios中什么是實例方法

ios中什么是實例方法

時間: 歐東艷656 分享

ios中什么是實例方法

  1:實例方法是— 類開頭是+ 實例方法是用實例對象訪問,類方法的對象是類而不是實例,通常創建對象或者工具類。

  在實例方法里,根據繼承原理發送消息給self和super其實都是發送給self

  在類方法里面self是其他的類的類方法,在類方法中給self發送消息只能發類方法self是類super也是

  什么時候用類方法,要創建一個實例時候獲取一個共享實例,或者獲取關于類的一些共有信息

  1,實例方法里面的self,是對象的首地址。

  2,類方法里面的self,是Class.

  盡管在同一個類里面的使用self,但是self卻有著不同的解讀。在類方法里面的self,可以翻譯成class self;在實例方法里面的self,應該被翻譯成為object self。在類方法里面的self和實例方法里面的self有著本質上的不同,盡管他們的名字都叫self。

  Object-C中的私有方法和私有成員變量

  成員變量默認對內是共有的,對外是私有的。

  @interface Controller : NSObject

  {

  @private: NSString *something;

  }

  + (void)thisIsAStaticMethod;

  - (void)thisIsAnInstanceMethod;

  @end

  @interface Controller (Private)

  - (void)thisIsAPrivateMethod;

  @end

  下面的代碼就是怎樣獲取私有變量(記得加頭文件#import ):

  NSString *str;

  Mobj *obj = [[Mobj alloc] init];

  object_getInstanceVariable(obj, "mt_", (void *)&str);

  NSLog(@"%@",str);

  [obj release];

  //

  IOS實例方法和類方法的區別

  類方法和實例方法

  1:實例方法是— 類開頭是+ 實例方法是用實例對象訪問,類方法的對象是類而不是實例,通常創建對象或者工具類。

  在實例方法里,根據繼承原理發送消息給self和super其實都是發送給self

  在類方法里面self是其他的類的類方法,在類方法中給self發送消息只能發類方法self是類super也是

  什么時候用類方法,要創建一個實例時候獲取一個共享實例,或者獲取關于類的一些共有信息

  2:類方法(class method)和實例方法(instance method)。類方法被限定在類范圍內,不能被類的實例調用(即脫離實例運行)。alloc就是一種類方法。實例方法限定在對象實例的范圍內(即實例化之前不能運行)。init就是一種實例方法,被alloc方法返回的對象實例調用。

NSObject* object1 = [[NSObjectalloc] init];

  instance method 以減號 "-" 開頭

  class method 以加號 “+” 開頭,相當于static方法

  3:see see 更健康

  Objective-C

  1.OC是一門基于C的面向對象語言,是C語言的一個超集,同時具有C語言的特征

  2.OC對類的定義和實現以及初始化

  //聲明類接口,繼承NSObject對象(該對象是OC中所有類的頂級父類,所有類都繼承于它)

  @interface ClassName :NSObject

  //成員屬性和成員函數的聲明

  +(void)function;//類方法,不需要實例化對象就可以調用的方法

  - (void)function2 :(NSString *)arg;//成員方法,必須通過實例化的對象調用

  @end

  //實現類

  @imlementation ClassName

  //成員屬性初始化和方法的定義

  @end

  對象的初始化:ClassName *obj = [[ClassName alloc] init]

  OC中以消息機制傳遞信息,發送alloc消息給類分配內存空間,發送init消息生成對象,指針指向對象本身。

  3.類方法的調用

  [obj function];

  NSString *str = [NSString stringWithString:@"hello"];

  [obj function2 : str];

  4.輸出函數

  根據不同的輸出格式輸出不同的值 (%d :整形 ,%@:對象<發送description消息>,%s:字符串)

  NSlog(@“The result is %d”,intNum);

  CF代表Core Foundation (Cocoa)

  CFShow發送description給它顯示的對象,CFShow打印的信息不會顯示時間戳,NSLog會顯示,同時CFShow不需要格式字符 串,它只能用于對象

  CFShow(obj);

  5.屬性

  支持點表示法:myTableViewCell.textLabel.text = @"hello" 等價于 [[myTableViewCell textLabel] setText:@"hello"];

  使用屬性生成器 property

  在h文件中聲明: @property int year

  在m文件中合成生成器:@synthesize year

  使用 obj.year = 1999 相當于調用了 [obj setYear:1999];

  可以自定義取值方法和賦值方法(getter and setter)

  -(int)year

  {

  return year;

  }

  - (void) setYear : (int) newYear

  {

  //此處添加了一些基本的內存管理方法,保留新的值,釋放以前的值

  if(newYear != year)

  {

  [year release];

  year = [newYear retain];

  }

  }

  也可以繞過oc的命名約定,自己指定getter和setter方法的名稱;

  @property(getter = isExist,setter = setExist:) BOOL exist;

  @synthesize exist;

  使用過程中既可以使用新定義的方法名,也可以使用以前的方法(點表示法)

  屬性的特性:readwrite readonly assign retain copy nonatomic

  assign:默認行為,使用@property int year就使用了assign行為,就是給實例變量賦了一個值

  retain:實現了兩個功能,一個是保留了賦值時傳遞的對象,其次是賦值前釋放了以前值,使用retain可以實現上面討論的內存管理的優點,使用時加上 @property (retain)int year;

  copy:發送一條復制的消息給被傳遞的對象,保留它,并釋放任何以前的值;

  nonactomic:非原子訪問器,加上后可以提升訪問速度,但當兩個線程同時修改同一個屬性時就會出現問題,原子屬性可以保證屬性在被一個線程使用時不被另一個線程訪問,不存在atomic關鍵字,默認情況下,所有方法都是自動合成的。(類似與java中的線程鎖機制synchronized)

  readwrite:可讀寫

  readonly:只讀

245545 主站蜘蛛池模板: 亚洲国产日韩a在线亚洲| 亚洲精品日韩在线观看| 日韩精品卡一卡二卡三卡四 | 国产成人av一区二区三| 中文字幕日韩国产精品| 唐人社视频呦一区二区| 久热伊人精品国产中文| 国产一区二区三区精品片| 精品熟女少妇免费久久| 插插射啊爱视频日a级| 男人的天堂av一二三区| 丁香五月激情图片| 成人免费无码大片A毛片抽搐色欲 成人啪精品视频网站午夜 | 亚洲第一人伊伊人色综合| 国产精品永久免费无遮挡| 国产日韩久久免费影院| 999精品全免费观看视频| 国产麻豆91网在线看| 久久精品亚洲热综合一区二区| 国产白嫩护士在线播放| 国产精品多p对白交换绿帽| 激情视频乱一区二区三区| 国产一区二区三区色视频| 成年午夜无码av片在线观看| 无码精品人妻一区二区三区中| 做暖暖视频在线看片免费| 99精品国产一区二区电影| 公喝错春药让我高潮| 中文字幕在线国产精品| 免费十八禁一区二区三区| 青青草国产精品日韩欧美| 精品无码国产自产拍在线观看蜜| 精品无码人妻| 中文字幕一区日韩精品| 国产第一页浮力影院入口| 精品日韩亚洲AV无码| 国产在线中文字幕精品| 中文午夜乱理片无码| 国产不卡一区二区精品| 香港日本三级亚洲三级| 国产精品高清一区二区三区|