【解決問題】[[Class alloc] init]
在函式中定義一個名為 myFraction 的變數如下 (1.)
此行的敘述表示 myFraction 是 Fraction 形態的物件
簡單說就是 myFraction 用來儲存 Fraction 類別的值
下一步我們則會像(2.)把記憶體配置給物件使用
然而通過 alloc 方法配置給記憶體並不代表物件已經初始化
為了能夠讓物件正常使用,則必須加以初始化(3.)
簡單說就是 myFraction 用來儲存 Fraction 類別的值
下一步我們則會像(2.)把記憶體配置給物件使用
然而通過 alloc 方法配置給記憶體並不代表物件已經初始化
為了能夠讓物件正常使用,則必須加以初始化(3.)
- Fraction *myFraction;
- myFraction = [Fraction alloc];
- myFraction = [myFraction init]
但今天輸出時發現
Output會顯示很多奇怪的東西
欲輸出值也沒有出現
這時Xcode回饋給我以下這樣的訊息:
- Thread 1: signal SIGABRT
我查了論壇,發現了解決的方法
原來在iOS 5以前還允許使用剛剛的語法
後來則必須簡化成底下這種寫法:
- Fraction * myFraction;
- myFraction = [[Fraction alloc]init];
將配置和初始化寫在同一行
改寫以後程式就能正常的輸出囉!
當然還有更簡潔的寫法
就連定義物件參數也一起整合:
就連定義物件參數也一起整合:
- Fraction *myFraction = [[Fraction alloc]init];
你以為這樣就是最精簡了嗎?
還有更精簡的新方法new,透過new可以取代 alloc和 init 這兩種方法
以達到配置記憶體與初始化的目的:
- Fraction *myFraction = [Fraction new];
留言
張貼留言