//以下為實現代碼 final String[] type = { "button", "staticText", "textField" }; for (final String element : type) { final List<WebElement> elems =
一.NSRunLoop 在Cocoa中,每個線程(NSThread)對象中內部都有一個run loop(NSRunLoop)對象用來迴圈處理輸入事件,處理的事件包括兩類,一是來自Input sources的非同步事件,一是來自Timer sources的同步事件; run Loop在處理輸入事件時會產生通知,可以通過Core Foundation向線程中添加run-loop observers來監聽特定事件,以在監聽的事件發生時做附加的處理工作。 每個run
1. 不可變數組 轉變為可變數組 聲明執行個體變數的數組 必須記得實現 對於遍曆數組找到對象後 如果還需要尋找 記得先結束 再尋找(return/break) NSArray * arr = @[@"人在囧途",@"煎餅俠",@"西遊記",]; NSMutableArray * arr =
定義:類別是可以通過不使用繼承而為現有類添加新方法的一種機制 思考:為什麼蘋果添加這種完全可以通過繼承來實現的機制呢。是效能上的考慮亦或是使用上的便利。對於這個疑問,思考很久,個人覺得從效能上來講類別並不見得比繼承要好,僅僅是使用上的便利而已。比如說我想為某個類(NSString)添加一個方法用於檢測該類對象是不是用我需資料: 分類實現: //NSString+Test.h @interface NSString(Test) -(BOOL)
下面我們通過一個案例MyNotes學習一下NSJSONSerialization的用法。這裡重新設計資料結構為JSON格式, 其中備忘錄資訊Notes.json檔案的內容如下:
iOS記憶體管理 iOS記憶體管理從整體來講,就四點: ①自己產生的對象,自己持有; ②非自己產生的對象,自己也能持有; ③不再需要自己持有的對象時釋放; ④非自己持有的對象無法釋放。 MRC下的記憶體管理 在進行MRC記憶體管理時,我們需要注意幾點: ①自己產生的對象,自己持有,比如new/alloc/copy/mutableCopy建立; ②非自己產生的對象,自己也能持有,比如retain持有; ③不再需要自己持有的對象時釋放,用release釋放;
之前,對於UITextField的使用沒有具體的研究,有些時候總感覺用起來有局限性,其即時有些屬性之前不知道,今天對於UITextField做下總結。 一、邊框的顯示 1、系統預設的邊框 UITextField *textFieldSystem = [[UITextField alloc] initWithFrame:CGRectMake(10, 50, self.view.frame.size.width-20, 30)];textFieldSystem.placeholder =
@interface GCUserMainCell : UITableViewCell @property (nonatomic, strong) UILabel *titleLabels; @end self.titleLabels = [[UILabel alloc]initWithFrame:CGRectMake(100, 10, (KYRect.size.width-170)/2, 30)];
普通加密方法是講密碼進行加密後儲存到使用者喜好設定中 鑰匙串是以明文形式儲存,但是不知道存放的具體位置 1base64加密 base64 編碼是現代密碼學的基礎 基本原理: 原本是 8個bit 一組表示資料,改為 6個bit一組表示資料,不足的部分補零,每 兩個0 用 一個 = 表示 用base64 編碼之後,資料長度會變大,增加了大約 1/3 左右.(8-6)/6可進行反向解密 Xcode7.0 之後出現的
//自訂Header視圖 - (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ if (section == 0) { UIView *view = [[UIView alloc]init]; &
1.擷取目前時間 +(NSString *)getCurrentDate { //擷取目前時間 NSDate *now = [NSDate date]; KELog(@"now date is: %@", now); NSCalendar
現在有應用A和應用B兩個應用,其中應用B希望可以開啟應用A,傳遞一定的參數給A,實現互動。 第一步:應用A在info中的URL Types 建立一項,填寫對應的identifier和schemes,其中identifier對應應用的Bundle Identifier,schemes是其他應用開啟本應用的網域名稱。如下圖所示: 第二步:在應用B的info中添加LSApplicationQueriesSchemes,在array中填寫應用A的schemes,如下圖所示:
之前公司要求在一個webview中調用一個背景介面,請求時需要一些參數。正常情況下請求都是GET請求,但是對於表單提交卻要求是POST請求,因此當我們重新建立一個Request來reload請求時,會自動變成GET請求,導致POST參數丟失。解決方案如下: 在NSMutableURLRequest類中提供了兩個這樣的屬性 @property (nullable, readonly, copy) NSString *HTTPMethod; @property (nullable,
1 目前使用的Regex分為兩種,一種是ios內建的NSPredicate,一種是開源的RegexKitLite,下面將分別介紹兩種方式的使用方法 NSPredicate (用於快速尋找,匹配) NSString * regex = @".*\\[.*\\]";//check [] for gps data NSPredicate *
問題描述: webview大小位置正確 webview載入的網頁卻下移 使得webview的底部露出 解決辦法: 添加如下代碼即可 self.automaticallyAdjustsScrollViewInsets = NO //oc self.automaticallyAdjustsScrollViewInsets = false //swift 原因:
筆者在閱讀中總結了一下,在iOS平台容易引起循環參考的幾個情境: 一、parent-child相互持有、委託模式 二、block 三、NSTimer 四,比如把self假如array中。也會造成循環參考 五,使用類別添加屬性 一、parent-child相互持有、委託模式 【案例】: @interface FTAppCenterMainViewController (){}@property(weak,nonatomic) UITableView*
在通讀文章之前,您可能需要瞭解記憶體配置的基礎知識。 預設情況下,block是存檔在棧中,可能被隨時回收,通過copy操作可以使其在堆中保留一份, 相當於一直強引用著, 因此如果block中用到self時, 需要將其弱化, 通過__weak或者__unsafe_unretained. 以下是範例程式碼及其說明, 讀者可以試著列印出不同情況下block的記憶體情況 當函數內部代碼結束時,函數中的所有儲存在棧區的變數都會被系統釋放,
模態跳轉加導覽列、 昨天改項目發現經常用的push跳轉突然不能用了 查看了代碼才知道原來這個頁面的是上個頁面模態跳轉過來的,所以需要把導覽列也帶過來 //chooseVC是你需要跳轉的視圖 UINavigationController * navigation = [[UINavigationController alloc]initWithRootViewController:chooseVC]; [self
在開發中經常會遇到和後台進行互動時時間格式的轉換。 首先列舉幾種常見的NSDate的格式: 1 . 20150605234106格式 2. 2015-06-05 15:41:06 +0000格式(正常的輸出格式) 3. 1433498400格式(以1970年起到現在的秒數) 第一種格式轉換為第二種格式 //第一種時間格式
數字時間戳記與時間的相互抓換 注意:由於java比php的時間精確,所以,後台資料的時間java是13位的,而php是10位的,iOS時間抓換隻支援10位元的,所以如果java寫背景話,把數字/1000就行了.具體做法如下: NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"YYYY-MM-dd HH:mm:ss";