iOS開發筆記--Objective-C中根據函式名呼叫函式
Objective-C中呼叫函式的方法是“訊息傳遞”,這個和普通的函式呼叫的區別是,你可以隨時對一個物件傳遞任何訊息,而不需要在編譯的時候宣告這些方法。所以Objective-C可以在runtime的時候傳遞訊息。
主要用到:SEL和@selector,當然還有performSelector
看例子:
先是三個函式:
- -(void)CallBack0
- {
- NSLog(@"CallBack0");
- }
- -(void)CallBack1:(int)a
- {
- NSLog(@"CallBack1:a=%i",a);
- }
-
-(void)CallBack2:(
- {
- NSLog(@"CallBack2:a=%i,b=%i",a,b);
- }
performSelector呼叫:
- [self performSelector:@selector(CallBack0)];
- [self performSelector:@selector(CallBack1:) withObject:1];
- [self performSelector:@selector(CallBack2:b:) withObject:1 withObject:2];
-
NSString *[email protected]
- SEL faSelector=NSSelectorFromString(a);
- [self performSelector:faSelector];
- NSString *[email protected]"CallBack1:";
- SEL fbSelector=NSSelectorFromString(b);
- [self performSelector:fbSelector withObject:1];
- NSString *[email protected]"CallBack2:b:";
-
SEL fcSelector=NSSelectorFromString(c);
- [self performSelector:fcSelector withObject:1 withObject:2];
這樣就可以根據函式名呼叫函式啦!
相關推薦
iOS開發筆記--Objective-C中根據函式名呼叫函式
Objective-C中呼叫函式的方法是“訊息傳遞”,這個和普通的函式呼叫的區別是,你可以隨時對一個物件傳遞任何訊息,而不需要在編譯的時候宣告這些方法。所以Objective-C可以在runtime的時候傳遞訊息。 主要用到:SEL和@selector,當然還有perf
iOS開發筆記--Objective-C實現多繼承
我們都知道objective C不能像C++一樣支援多繼承,但是在OC的使用經常會碰到需要使用多繼承的情況。例如,ClassA中有methodA,ClassB中methodB,而現在需要使用這兩個類中的方法。如何按照C++的程式設計思路,毫無疑問採用多繼承就搞定
iOS開發筆記--OC工程中調用不了Swift程式碼
今天在OC工程裡面直接引入了一個第三方的Swift包,結果OC檔案裡面死活找不到Swift物件。開啟 “工程名-swift.h”檔案內容似乎是空的。(正常的檔案應該會有很多OC方法,物件) 後來發現工程裡面並沒有”工程名-Bridging-Header.h
iOS開發之Objective-c的MD5/SHA1加密演算法的實現
Objective-c實現MD5和SHA1演算法相對還是比較簡單的,可以直接呼叫系統的C/C++共享庫來實現呼叫 MD5即Message Digest Algorithm 5(資訊-摘要演算法 5),用於確保資訊傳輸完整一致。是計算機廣泛使用的雜湊演算法之一 SHA即Se
在c/c++中使用字串動態呼叫函式
在專案的開發過程中,需要使用到類似Java的反射機制,根據提供的字串,動態的呼叫指定的函式。 Java反射機制:this.getClass().getMethod("test_"+interfaceName,null).invoke(this,null); 如:傳入main
IOS開發筆記12-Object-C中的物件與記憶體
前言 Object-C的記憶體管理機制與java那種全自動的垃圾回收機制是不同的,它本質上還是c語言的手動管理方式,只不過稍微加了一些自動方法。 指標和指標的值 以下程式宣告一個指向NSDate例項的變數: #import <Found
iOS --- Objective-C中類的成員變數與屬性
在Objective-C的類與物件的概念中. 成員變數與屬性的區別與聯絡一直沒有搞清楚. 直到學習了慕課網上的這個課程Objective-C面向物件初體驗, 才算真正有了點感覺了. 最關鍵的結論就是: 類內使用成員變數{}, 類外使用屬性@property.
iOS---Objective-C中@class與#import的區別
在Objective-C的專案中, @class通常放在.h檔案中, 主要作用在於提升編譯效能, 且能防止標頭檔案的遞迴import. 編譯效能的考慮 通常, 使用#import引入一個類的標頭檔案, 編譯時會將該類的標頭檔案中的所有資訊都引入, 包含屬
IOS基礎:深入理解Objective-c中@class的含義
objective-c中,當一個類使用到另一個類時,並且在類的標頭檔案中需要建立被引用的指標時, 如下面程式碼: A.h檔案 #import "B.h" @interface A : NSObject { B *b; } @end
iOS開發筆記-根據銀行卡號判斷銀行名稱
方便大家使用已更新為plist檔案,git地址:根據銀行卡號判斷銀行名稱 雞肋的後臺返回銀行卡號卻沒有返回名稱,問他是不是忘了新增,他說你自己網上找找。。。。。。尼瑪,很無奈的在網上扒拉了半天知道了java的,萬幸博主還學過Java,四年的大學也不是白上了,還好程式碼還不
ios開發-Object-C可變引數函式
簡介 一個可變引數函式是指一個函式擁有不定的引數,即為一個函式可接收多個引數。有時我們會遇到一些算術問題需要用到,比如是計算傳入引數的總和,字串的連線或是其它操作過程,我們在 OC 裡也經常使用,最經典的就是 NSLog( C 為 printf ) ,它可以指定格式的輸出,格式化輸出的內容。 現在我們
iOS開發筆記之四十三——日曆NSCaledar使用過程中遇到的一個蘋果系統bug
我們的app上有一個時間日曆,早期的需求只考慮到app在國內使用。在國內時,NSCaledar這個方法的使用一切正常,後來業務要擴大到國外各地。NSCaledar就暴露了一個問題,這個問題直接導致了我們日曆頁面的卡死。我們忽略掉所有的繁文縟節,直接進入問題的根源。
iOS開發筆記之根據圖片URL獲取圖片尺寸
載入網路圖片時,根據Url獲取圖片的尺寸進行UI佈局。可將方法+ (CGSize)getImageSizeWithURL:(id)URL;放在UIImage的分類中。引入系統的ImageIO.framework/** * 根據圖片url獲取圖片尺寸 */ + (CGSi
iOS 關於Objective-C中UIScrollView的使用總結
前言:由於之前很早寫的關於【iOS 關於UIScrollView的幾點總結】,是從自己的markdown筆記直接拷貝過來後也沒有整理,所以在閱讀上顯得有點亂, 今天花時間重新整理排版了下,方便閱讀。還請見諒這麼久才重新整理。 1、什麼是 UI
【iOS沉思錄】深思Objective-C中的property屬性
OC中的屬性 屬性(Property)是Objective-C語言的其中一個特性,它把類物件中的資料變數及其讀寫方法統一封裝起來,是對傳統C++中要重複為每個變數定義讀寫方法的一種封裝優化,OC將這些變數封裝為屬性變數,系統可自動生成getter和se
Objective-C 中的Runtime的詳細使用
enc ring 博客 document 每次 tps htm lec guid Runtime全面了解 一直以來,OC被大家冠以動態語言的稱謂,其實是因為OC中包含的runtime機制。Runtime 又叫運行時,是一套底層的 C 語言 API,其為 iO
objective-c 中數據類型之四 字典(NSDictionary)
bject ted ray 初始化 -c lec com lock led // 1. 字典初始化、賦值方式1 NSMutableDictionary *m_dictionary = [[NSMutableDictionary alloc] initWithCa
objective-c 中數據類型之二 字符串(NSString)
option 大小 edas 字符串長度 seq scan 後者 code form // 1. 聲明一個NSString對象,註意對象前要加‘*’。 NSString *string1; // 賦值方
在iOS開發的Quartz2D使用中實現圖片剪切和截屏功能
ogr boa selector cgrect 如果 搭建 shu 分享 ins 原文 http://www.jb51.net/article/75671.htm 圖片剪切一、使用Quartz2D完成圖片剪切1.把圖片顯示在自定義的view中先把圖片繪制到v
[學習筆記—Objective-C]《Objective-C-基礎教程 第2版》第十一章 屬性
變量名 erl .text nonatomic syn split view 不能 -name 11.1 使用屬性值 @property float rainHandling; //表明此類具有float類型的屬性,其名稱為rainHandling