Time of Update: 2016-06-18
標籤:Objective-C拓展了C,自然很多用法是和C一致的。比如浮點數轉化成整數,就有以下四種情況。 1.簡單粗暴,直接轉化float f = 1.5; int a; a = (int)f; NSLog("a = %d",a);輸出結果是1。(int)是強制類型轉化,丟棄浮點數的小數部分。2.高斯函數,向下取整float f = 1.6; int a; a = floor(f); NSLog("a =
Time of Update: 2016-06-16
標籤:How Do I Declare A Block in Objective-C?As a local variable:returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};As a property:@property (nonatomic,
Time of Update: 2016-06-14
標籤:轉自 http://blog.csdn.net/haishu_zheng/article/details/12873151Objective-C中的@dynamic 一、@dynamic與@synthesize的區別@property有兩個對應的詞,一個是@synthesize,一個是@dynamic。如果@synthesize和@dynamic都沒寫,那麼預設的就是@syntheszie var
Time of Update: 2016-06-13
標籤:今天開始用oc寫iOS程式,遇到的問題有1.在不同的類使用類的方法或者訪問類的屬性的時候(公開的方法或者屬性),方法或者屬性必須在類標頭檔中聲明。2.物件類型的聲明以及定義需要用*,表明這個是一個指向一塊記憶體空間的指標。基本類型則不需要。3.init方法的定義需要判斷是否初始化成功(self是否不為空白)。4.#define 可以預定義一段文本,在編寫代碼的時候可以用預定義的變數名代替這一塊文本。5.使用不同的類的時候要注意匯入標頭檔。6.for
Time of Update: 2016-06-10
標籤:話不多說,學了這麼多,寫個快速排序先。除了快排,以後有時間還要加堆排、歸併等等。今天學了有,類、協議、文法。因為演算法類,不止一個演算法。所以建立一個Algorithm(演算法)協議:1 #import <Foundation/Foundation.h>2 3 @protocol AlgorithmProtocol <NSObject>4 5 @optional6 +(void)quickSortWithArray:(NSMutableArray*)array
Time of Update: 2016-06-10
標籤:一、協議 協議主要是提供介面、或是類似C++多重繼承功能,為類提供一種修飾機制。協議不是為回調而生的,它應該表述一組互操作約定。 優點: 實現簡單,容易理解。 強型別檢查。 缺點: 類與類間建立了比較強的耦合關係 有可能需要較長期儲存委託以進行回調。如果保留的委託需要有獨佔性,可能會給單件模式、以及多線程帶來麻煩。 類只能通過一個方法完成一種類型的回調。代碼邏輯很容易集中到一個方法中。 大部分回調使用實際無需通過協議暴露給外部。
Time of Update: 2016-06-10
標籤:Objective-C中的協議,相當於Java中的介面參考:http://www.cnblogs.com/zzy0471/p/3894307.html一個簡單的協議遵循:PersonProtocol.h@protocol 協議名<上級協議名>@required 必須要實現的方法@optional 可選實現的方法(可以不實現)@end 遵循協議前,需引入寫有協議的標頭檔Person.h 類名<協議名> 代表遵循此協議,
Time of Update: 2016-06-10
標籤:.h標頭檔,用於聲明一些公開的屬性、方法。標頭檔一般不會放太多的東西,沒必要暴露太多介面,私人和封裝。.m主檔案,用於實現.h檔案中的方法,以及一些其它的方法。 -(傳回值)方法名參數1名稱:(參數1類型) 參數1函數內名稱 參數2名稱:(參數2類型) 參數2函數內名稱......;調用靜態(類)方法:[類名 方法];調用執行個體方法:[變數名
Time of Update: 2016-06-08
標籤: idid是指向Objective-C對象的指標,等價於C語言中的void*,可以映射任何對象指標指向他,或者映射它指向其他的對象。常見的id類型就是類的delegate屬性。SELSEL類型是Objective-C用來定義方法的關鍵字,但卻從不屬於任何類執行個體,其值是通過@selector進行計算,可以把她當做一個函數指標來使用,但實際上的類型是const
Time of Update: 2016-06-05
標籤:【原】談談對Objective-C中代理模式的誤解本文轉載請註明出處 —— polobymulberry-部落格園1. 前言這篇文章主要是對代理模式和委託模式進行了對比,個人認為Objective-C中的delegate大部分用法屬於委託模式。全文有些摳概念,對實際開發沒有任何影響。前段時間看到的一篇部落格iOS開發——從一道題看Delegate,和這篇部落格iOS APP
Time of Update: 2016-06-01
標籤:在之前的文章中我們介紹了Runtime是什麼,屬於理論性介紹,你看了上篇很迫切的想知道Runtime到底能幹什嗎?不要著急,這一篇Blog將將講解Runtime怎麼應用到實戰中Runtime官方文檔在這裡,包括了介面名字以及使用說明。下文講到的介面都能在此文檔中找到。 KVC中setValue中使用我們知道在KVC中如果直接setValue如果對象沒有這個屬性或者是變數就會直接Crash,如:RuntimeObj *obj = [[RuntimeOb
Time of Update: 2016-06-01
標籤:RunTime簡稱運行時。就是系統在啟動並執行時候的一些機制,其中最主要的是訊息機制。對於C語言,函數的調用在編譯的時候會決定調用哪個函數( C語言的函數調用請看這裡 )。編譯完成之後直接順序執行,無任何二義性。OC的函數調用成為訊息發送。屬於動態調用過程。在編譯的時候並不能決定真正調用哪個函數(事實證明,在編 譯階段,OC可以調用任何函數,即使這個函數並未實現,只要申明過就不會報錯。而C語言在編譯階段就會報錯)。只有在真正啟動並執行時候才會根據函數的名稱找
Time of Update: 2016-05-31
標籤:轉載、引用請註明來源!Objective-C的類一、文法簡介1、類1)、.h檔案:類的聲明檔案,用於聲明執行個體變數和方法。類的聲明使用關鍵字@interface和@end。【.h中的方法只是聲明,不實現,也就是只說明了方法名、傳回型別、接收的參數及類型,並不會編寫方法的內部代碼】!2)、.m檔案:類的實現檔案,用於實現.h中聲明的方法。類的實現檔案使用關鍵字@implementation和@end。 2、執行個體變數執行個體變數的聲明和C語言定義變數的方法是一樣的,使用&ldq
Time of Update: 2016-05-27
標籤:小結: nil用來給對象賦值(Object-C的任何對象都屬於id類型),NULL則給任何指標賦值,NULL和nil不能互換,nil用於類指標賦值(在Object-C中類是一個對象,是類的meta-class的執行個體),而NSNull則用於集合操作,雖然它們表示的都是空值,但是使用場合完全不同,所以在編碼時嚴格按照變數類型來賦值,將正確的空值賦給正確的類型,使代碼易於閱讀和維護,也不易引起錯誤。 1.oc最好 用nil [ nil
Time of Update: 2016-05-27
標籤:setObject:forKey: 是NSMutableDictionary類的方法 key參數類型可以是任意類型對象
Time of Update: 2016-05-26
標籤:在接觸OC語言一段時間後,我們大家都知道未知類型的對象可以用 id 表示,那麼 instancetype
Time of Update: 2016-05-23
標籤:一.const1>對於const,記住關鍵的一點,它只是修飾右邊的變數.例如:- (void)viewDidLoad { [super viewDidLoad]; // const兩種用法 // const:修飾基本變數p // 這兩種寫法是一樣的,const只修飾右邊的基本變數b const int b = 20; // b:唯讀變數 int const b = 20; // b:唯讀變數 //
Time of Update: 2016-05-22
標籤:一.文法規範1.類:抽象的描述一件事物,比如將人、狗和貓抽象成動物類 在OC中用兩個檔案來描述一個類1> .h:類的聲明檔案,用於聲明成員變數和方法,類的聲明代碼在關鍵字@interface和@end之間;2>
Time of Update: 2016-05-20
標籤:第一條:瞭解objective-c語言的起源訊息結構而非函數調用。區別在於:使用訊息結構的語言,其運行時所應執行的代碼由運行環境來決定;而使用函數調用的語言,則由編譯器決定。Objective-c為C語言添加了物件導向特性,是其超集。Objective-C使用動態綁定的訊息結構,也就是說,在運行時才會檢查物件類型。接受一條訊息之後,究竟應執行何種代碼,由運行期環境而非編譯器來決定。掌握C的記憶體模型和指標。第二條:在類的標頭檔盡量少引入其他標頭檔除非確有必要,否則不要引入標頭檔。一般來說,
Time of Update: 2016-05-10
標籤:先說一下本文中會提到的內容:##,__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__等宏變數:先舉一個例子,會用到上面這些宏: #define myprintf(...) printk("[lch]:File:%s, Line:%d, Function:%s," \ __VA_ARGS__, __FILE__, __LINE__ ,__FUNCTION__); 此處的 #define 的作用是將 myprintf(