Time of Update: 2017-02-27
Objective-C中的協議(Protocol)類似於常用的介面,協議(Protocols)中定義的方法,在類中實現。@protocol MyFirstProtocol- (void)myFirstProtocolMethod;@end在iPhone OS中,協議(Protocol)通常用來實現委派物件(Delegate Object)。委派物件(Delegate
Time of Update: 2017-02-27
使用Object-C中的分類,是一種編譯時間的手段,允許我們通過給一個類添加方法來擴充它(但是通過category不能添加新的執行個體變數),並且我們不需要訪問類中的代碼就可以做到,這點和javascript中使用原型來定義屬性有點類似。我們可以為一個類建立一個新的方法,而不需要在代碼中編輯類定義。下面就是定義並使用分類的例子程式,通過下面代碼,我們可以給Object-C中的NSString
Time of Update: 2017-02-28
本文將Objective-C討論了語言的核心文法。這部分開始詳述一些具體的文法。正如你期待的一樣,涉及到了定義和類。 類並不是特殊的 在Smalltalk中,類是具有一些特性的對象。在Objective-C中也一樣。一個類是一個對象,對象回應訊息。Objective-C和C++都分離了對象分配和初始化。 在C++中,對象分配通過新的操作。在Objective-C中,這樣的操作是通過給類發送分配訊息—調用malloc()或者一個等價。 C++中的初始化是通過調用
Time of Update: 2017-02-28
TIOBE公布了2011年7月程式設計語言熱門排行榜,本期的榜單標題: Objective-C將成為年度語言。 前三甲依然是Java、C、C++,4至10名依次為C#、PHP、Objective-C、Visual
Time of Update: 2017-02-28
1、CocoaPods是跑在Ruby的軟體,安裝可能需要幾分鐘,安裝命名: sudo gem install cocoapods 2、如果想為每個第三方庫產生文檔,那運行 brew install appledoc 這步是可選的。 安裝完成後提示: 如果你的Ruby環境不夠新的話,可能要更新一下: gem update
Time of Update: 2017-01-18
語句條件陳述式條件陳述式體應該總被大括弧包圍。只有一行代碼最好也加上,否則會帶來安全隱患。複製代碼 代碼如下:// 推薦if (!error) { return success;}// 不推薦if (!error) return success;if (!error) return success;尤達運算式(Yoda)不要使用尤達運算式。(名字起源於星球大戰中尤達大師的講話方式,總是用倒裝的語序)複製代碼 代碼如下://
Time of Update: 2017-01-18
學過c/c++的朋友都知道,我們定義struct/class的時候,如果把訪問限定符(public,protected,private)設定為public的話,那麼我們是可以直接用.號來訪問它內部的資料成員的。比如//in Test.hclass Test{public: int i; float
Time of Update: 2017-01-18
基本理解這個模式有三個關鍵角色:原發器(Originator)、備忘錄(Memento)、看管人(caretaker)。三者的基本關係是:原發器建立一個包含其狀態的備忘錄,並傳給看管人。看管人不知道如何與備忘錄互動,但會把備忘錄放在一個安全之處保管好。備忘錄(Memento):在
Time of Update: 2017-01-18
一、類1. 類名類名應該以三個大寫字母作為首碼(雙字母首碼為Apple的類預留)不僅僅是類,公開的常量、Protocol等的首碼都為相同的三個大寫字母。當你建立一個子類的時候,你應該把說明性的部分放在首碼和父類名的中間。例如:如果你有一個 ZOCNetworkClient 類,子類的名字會是ZOCTwitterNetworkClient (注意 "Twitter" 在 "ZOC" 和 "NetworkClient" 之間); 按照這個約定, 一個UIViewController 的子類會是
Time of Update: 2017-01-19
對於一門語言得學習,個人覺得最主要得就是其文法格式和那些關鍵字。因為對於基本現在大多數得語言,每種語言都是一種符合人思維得方式來與電腦交流。因此,其實每種語言中定義或是封裝好得基礎類和類庫,其實都是很相似得。比如
Time of Update: 2017-01-19
本文執行個體為大家分享了Objective-C半透明導航的具體實現代碼,供大家參考,具體內容如下#define kScreenWidth [[UIScreen mainScreen] bounds].size.width#define kScreenHeight [[UIScreen mainScreen] bounds].size.height #import "RSwenNav.h" @implementation RSwenNav{ UIVisualEffectView
Time of Update: 2017-01-19
EGOCache簡介EGOCache is a simple, thread-safe key value cache store. It has native support for NSString, UI/NSImage, and NSData, but can store anything that implements <NSCoding>. All cached items expire after the timeout, which by default, is
Time of Update: 2017-01-19
1.建立字串(1)常量字串複製代碼 代碼如下:NSString *string = @"i am an iOSDevTip!";(2)常用建立方法複製代碼 代碼如下:NSString *string = [[NSString alloc] init];string = @"i am an iOSDevTip too!";(3)用initWithString建立字串複製代碼 代碼如下:NSString *string = [[NSString alloc]
Time of Update: 2017-01-19
Objective-C程式的結構就像學習所有程式設計語言一樣,第一個程式就是在螢幕列印出“Hello World !”。我看的書上用到的編譯器還是比較老的,我現在用的是Xcode4.2.1,它有自動記憶體管理,所以書上的一些程式也許會報錯。可以在建立工程時不選擇Use Automatic Reference Counting選項解決這個問題。運行Xcode,建立一個Command Line Tool工程,取名FirstProgram。在下一步,我們也取消Use Automatic
Time of Update: 2017-01-19
簡介冒泡演算法是一種基礎的排序演算法,這種演算法會重複的比較數組中相鄰的兩個元素。如果一個元素比另一個元素大(小),那麼就交換這兩個元素的位置。重複這一比較直至最後一個元素。這一比較會重複n-1趟,每一趟比較n-j次,j是已經排序好的元素個數。每一趟比較都能找出未排序元素中最大或者最小的那個數字。這就如同水泡從水底逐個飄到水面一樣。冒泡排序是一種時間複雜度較高,效率較低的排序方法。其空間複雜度是O(n)。1, 最差時間複雜度 O(n^2)2, 平均時間複雜度
Time of Update: 2017-01-19
JSPatch是GitHub上一個開源的架構,其可以通過Objective-C的run-time機制動態使用JavaScript調用與替換項目中的Objective-C屬性與方法。其架構小巧,代碼簡潔,並且通過系統的JavaScriptCore架構與Objective-C進行互動,這使其在安全性和審核風險上都有很強的優勢。Git源碼地址:https://github.com/bang590/JSPatch。一、從一個官方的小demo看起通過cocoapods將JSPath整合進一個Xcode工程
Time of Update: 2017-01-19
擷取IPhone 的IMSI序號#include <dlfcn.h>#define PRIVATE_PATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"- void getImsi(){#if !TARGET_IPHONE_SIMULATOR void *kit = dlopen(PRIVATE_PATH,RTLD_LAZY); NSString *imsi = nil;
Time of Update: 2017-01-19
本文以執行個體詳細描述了Objective-C中常用的結構體NSRange,NSPoint,NSSize(CGSize),NSRect的定義及用法,具體如下所示:1、NSRange:NSRange的原型為typedef struct _NSRange {NSUInteger location;NSUInteger length;} NSRange;NSMakeRange的函數:NS_INLINEz是內嵌函式typedef NSRange *NSRangePointer;NS_INLINE
Time of Update: 2017-01-19
Android和iOS開發都支援C++開發,可以一套代碼多平台使用。同時C++難以反編譯的特性也可以為Android開發帶來代碼的保密,另一native特性也可以提高代碼的運行效率。一、為什麼使用C/C++ 便於移植,用C/C++寫得庫可以方便在其他的平台上再次使用。 代碼的保護,由於java層代碼很容易被反編譯,而C/C++庫反匯難度較大。 提高程式的執行效率,將要求高效能的應用邏輯使用C/C++開發,從而提高應用程式的執行效率。 訪問現有開源庫,需要訪問底層的API或引用一些只有C/
Time of Update: 2017-01-19
KVO執行個體淺析最近遇到個問題,在處理項目中一個評論介面時,因為直接用的是UIWebView展示評論列表,結果取到的頁面上下都有一段CGSize為(320,65)的亂七八糟的廣告,十分礙眼.頭部廣告因很方便的在頭部座標貼上自己的logo解決了,但是尾部的,因為每個頁面的評論長短不一,座標也就不一樣,這樣就不能給定死座標去貼logo,思前想後,通過KVO很好的解決了這個問題.@KVO概述:KVO,即:Key-Value