iOS SEL的簡單總結

2021-07-09 05:07:44 字數 1496 閱讀 4323

複製**

@inte***ce person : nsobject

+ (void)test1;

- (void)test2;

@end

// 根據.h檔案中定義的person類和方法 執行完這行** 在記憶體中如下

person *person = [[person alloc] init];

複製**

sel就是對方法的一種包裝。包裝的sel型別資料它對應相應的方法位址,找到方法位址就可以呼叫方法

1.方法的儲存位置

在記憶體中每個類的方法都儲存在類物件中

每個方法都有乙個與之對應的sel型別的資料

根據乙個sel資料就可以找到對應的方法位址,進而呼叫方法

sel型別的定義:  typedef struct objc_selector *sel

2.sel物件的建立

sel s1 = @selector(test1);   // 將test1方法轉換為nsstring物件 

sel s2 = nsselectorfromstring(@"test1");   // 將乙個字串方法轉換成為sel物件

3.sel物件的其他用法

// 將sel物件轉換為nsstring物件  

nsstring *str = nsstringfromselector(@selector(test));

person *p = [person new];

// 呼叫物件p的test方法

[p performselector:@selector(test)];

複製**

/******************************* person.h檔案 **********************************/

#import

@inte***ce person : nsobject

- (void)test1;

- (void)test2:(nsstring *)str;

@end

/******************************* person.m檔案 **********************************/

#import "person.h"

@implementation person

- (void)test1

- (void)test2:(nsstring *)str

@end

/******************************* main.m檔案 **********************************/

#import "person.h"

#import

/*

呼叫方法有兩種方式:

1.直接通過方法名來呼叫

2.間接的通過sel資料來呼叫

*/int main(int argc, const char * argv)

複製**

轉至:

iOS SEL的用法和講解

1 什麼是sel 可理解成 selector 方法選擇器。於是乎就可說成是c中的指標函式。而在oc裡不能用指標函式,所有就只能搞乙個 selector這來取了。他的結果是sel型別,用assgin修飾。去取方法的編號 函式位址 2 使用 2.1 示例 selview.h sel實現 import i...

IOS SEL的理解與使用

有很多人,認為block的推廣可取代 設計模式,其實block並不能取代 的模式可以讓 邏輯性更強,更整潔,也會有更高的可讀性和可擴充套件性。相比之下,我覺得block更多的是取代了選擇器 selector。selector是什麼?我們要首先明白sel,sel並不是一種物件型別,我們通過xcode的...

Servlet的簡單總結

網頁程式設計時servlet的使用頻率很高,以下是對servlet進行的一些簡單說明和總結 servlet的使用可分為三個主要階段 1,初始化,呼叫init 方法 2,響應客戶請求,呼叫service 方法 3,終止,呼叫destroy 方法 servlet初始化階段 1,servlet容器啟動時自...