Time of Update: 2018-07-26
對於iOS的應用程式,為了保持記憶體的使用效率,系統會嚴格監視對象的引用計數,當引用計數歸0時,對象將被立即釋放。一般情況下,用release足夠了:alloc/copy/new或者retain一個對象,使用對象,然後用release釋放對象。
Time of Update: 2018-07-26
現在,我們將用Objective-C定義一個實際的類,並學習如何使用類的執行個體。 同樣,我們將先學習過程。因此,實際的程式範例可能不是特別實用,那些更加實際的內容將在稍後討論。 假設要編寫一個用於處理分數的程式,可能需要處理加、減、乘、除等運算。如果你還不知道什麼是類,那麼可以從一個簡單的程式開始,代碼如下: 代碼清單3-1 // 採用分數的簡單程式 #import <Foundation/Foundation.h>
Time of Update: 2018-07-26
OC中提供了除了使用alloc分配記憶體再使用init來初始化的兩段構造方法外,另外也提供了像C++和Java中的new的方式來建立對象,new整合了alloc和init的兩次調用,簡化了代碼。 //// main.m// 06_New//// Created by apple on 14-11-11.// Copyright (c) 2014年 cc. All rights reserved.//#import
Time of Update: 2018-08-19
架構是由許多類,方法,函數以及文檔按照一定的規則群組織起來的集合,以便於程式員更方便、迅速的開發程式。Cocoa程式編寫主要用到兩個架構Foundation和ApplicationKit(UIKit). 其中Foundation架構主要定義了一些基礎類,供程式員使用,而ApplicationKit主要是一些使用者介面設計的類,用於Mac開發使用此類。Foundation架構中的所有類都繼承自NSObject。
Time of Update: 2018-08-19
在實際的項目開發中,二維數組也是常常用到的資料結構。OC中的二維數組也是通過一維數組來建立的,今天我們來詳解一下如何在OC中使用二維數組。 【使用NSArray初始化二維數組】 使用NSArray初始化的一維數組和二維數組都是不可變數組。 #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {
Time of Update: 2018-08-19
同樣的,數組也有可變的形式,即NSMutableArray,現在我們來實現這些方法: (1)建立Person.h檔案,實現如下: #import <Cocoa/Cocoa.h>@interface Person : NSObject@property(nonatomic,strong) NSString *personName;- (instancetype)initWithPersonName: (NSString *
Time of Update: 2018-08-19
NSArray是Foundation架構中的不可變數組,我們來實現一下這些方法: #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //OC的數組可以儲存不同類型的對象;OC的數組只能儲存物件; //但是記憶體空間還是連續的; NSArray *arr1
Time of Update: 2018-08-19
我們知道OC可以和C進行混合編程,同樣的,C的字串和OC的字串也是非常的類似。在某些情況下,需要進行相互轉換。現在我們來實現一下: #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { char *str1 = "Hello";
Time of Update: 2018-08-19
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { ////////////////////////// //讀取檔案; //1.本地檔案; 2.網路檔案; //路徑類 NSString *string11 = @"http://www.baidu.com";
Time of Update: 2018-08-19
#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char * argv[]) { //類似Java中的Map,即索引值對; NSDictionary *dict = @{@"name":@"zhangsan",@"age":@23}; //列印出整個字典; NSLog(@"%@",dict);
Time of Update: 2018-08-19
對於NSString,還有很多實用的方法,比如:大小寫轉換,前尾碼的匹配,字串的拼接,格式化字串的等等。下面我們來看一下: #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { char *str1 = "Hello"; NSString
Time of Update: 2018-12-03
Posing,顧名思義,意思是“冒充”,它跟categories類似,但本質上不一樣,Posing存在的目的在於子類可以冒充父類,使得後續的代碼無需把父類修改為子類,就可以很方便的讓父類表現成子類的行為,從而實現非常方便的冒充,這在一般的語言中是難以想象的。 它允許你擴充一個class,並且全面的冒充這個super
Time of Update: 2018-12-03
objective-c中的protocol跟java中的介面interface和c++中的純虛類(purely virtual class)一樣,本質都是用於一個類需要遵循的某個通訊協定,從這個意義上看,objective-c的協議說法可能更加恰當。 一,如何定義protocol? protocol的定義非常簡單,基本遵循以下的格式即可: @protocol ProtocolName //Here is protocol method
Time of Update: 2018-12-03
Objective-C 有種叫做id 的型別,它的運作有時候像是void*,不過它卻嚴格規定只能用在對象。Objective-C 與Java 跟C++ 不一樣,你在呼叫一個對象的method 時,並不需要知道這個對象的型別。當然這個method 一定要存在,這稱為Objective-C 的訊息傳遞。Objective-C這點的屬性類別似javascript。 從這個意義看,id類型是Objective-C特有的引用對象泛型的一種手段。如下的demo:-(id)
Time of Update: 2018-12-03
objective-c的categories(分類) 一,當你想要為某個class 新增methods,你通常會擴充(extend,即繼承)它。然而這不一定是個完美解法,特別是你想要重寫一個class 的某個功能,但你卻沒有原始碼時。Categories 允許你在現有的class 加入新功能,但不需要擴充它。Ruby 語言也有類似的功能。例子一:1,MyObjectCateName.h:#import <Foundation/NSObject.h>#import "MyObject.
Time of Update: 2018-12-03
中文難以表達原著的意思Method and Class AttributesObjective-C now supports some gcc attributes for Objective-C methods.Syntactically, attributes for a method follow the method's declaration,and attributes for a method parameter sit between the parameter type
Time of Update: 2018-12-03
對於iPhone開發,執行的時候檢測我們都回會用instruments,但是有些時候我們可以扼殺這些於搖籃之中。不得不談的static analysise。這個可以build 檢查可以直接執行build and analyze執行,也看樣在GetInfo中在build選項中勾上,每次build都會執行。不過你會看到它在build的時候,會浪費這些分析的時間,導致build時間長。可以參考下面的。 The Xcode static analyzer is a great complement
Time of Update: 2018-12-03
在Objective-C中,事實上與所有的程式設計語言一樣,在兩個數相加時使用加號(+),在兩個數相減時使用減號(-),在兩個數相乘時使用乘號(*),在兩個數相除時使用除號(/)。這些運算子稱為二元算術運算子,因為它們運算兩個值或項。運算子的優先順序你已經看到如何在Objective-C中執行簡單的運算,例如,加法。下面的程式進一步說明了減法、乘法和除法運算。在程式中執行的最後兩個運算引入了一個概念,即一個運算子比另一個運算子有更高的優先順序。事實上,Objective-C中的每一個運算子都有與
Time of Update: 2018-12-03
現在,我們將用Objective-C定義一個實際的類,並學習如何使用類的執行個體。同樣,我們將先學習過程。因此,實際的程式範例可能不是特別實用,那些更加實際的內容將在稍後討論。假設要編寫一個用於處理分數的程式,可能需要處理加、減、乘、除等運算。如果你還不知道什麼是類,那麼可以從一個簡單的程式開始,代碼如下:代碼清單3-1// 採用分數的簡單程式 #import <Foundation/Foundation.h> int main (int argc, char * argv[]){
Time of Update: 2018-12-03
http://www.infoq.com/cn/articles/wwdc2012-objective-c-new-feature今年2012的WWDC上,蘋果針對Objective-C和LLVM編譯器都做了重大改進,我們來看一看Objective-C增加了哪些新特性。1、方法順序無關Objective-C類由聲明檔案h和實現檔案m組成,所有的public方法都在h檔案中聲明,private方法可以寫在m檔案中,但是在早期的編譯環境中需要注意方法的順序,例如下面的代碼,在早期的編譯環境會給出警告