複製**
@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容器啟動時自...