undeclared identifier

Use of undeclared identifier 'XXX'; did you mean '_XXX'?

Object-C在2.0引入@property
但要注意的是,@property自動幫我們生成的getter/setter中,實際的變數名稱會被加上底線(underline),例如名為"ABC"的變數透過property宣告後,其實際可被存取的名稱是"_ABC"

.h file
@property(nonatomic) NSString *contentOfTest;

.m file
// 錯誤用法
contentOfTest =  @"這是測試";

// 正確用法1 (use the property)
self.contentOfTest  = @"這是測試";

// 正確用法2 (use the generated instance variable)
_contentOfTest  = @"這是測試"; 

SQLite Error : automatic index on tablename(columnname)

文章轉載

原文說明為何5.0的Android裝置會遇到Error等級的automatic index on tablename(columnname)錯誤,以及如何解決

Enable Zombie Objects

身為初學者,一定常卡關....以前學android只是不熟悉才看不懂Java Error
現在學Objective-C發現error log根本外星文XD

爬了一下網路文才發現,原來最常遇到的錯誤都是因為某object已被釋放(找不到),卻還是被某段程式碼呼叫~~一個已經找不到的物件Xcode當然無法提供易讀資訊

解決方式為Enable Zombie Objects
在Xcode開啟「Product → Scheme → Edit Scheme」,接著如下圖勾選「Enable Zombie Objects」即可

The keyword of class and interface at header file in Objective-C

// use class
@class MyClass;

// import file
#import "MyClass.h"

以上二者可替換嗎?YES!

那為何要有@class用法出現?

因為當我們需要互相引用的時候(如下粉紅色字體),會有無法預期的問題發生,這時候直接使用@class告訴compiler我要來使用剛引入的class,是比較好的方法~不然會有不停互相import引用的詭異情況
// 在MyClass1.h檔案
#import MyClass2.h

// 在MyClass2.h檔案
#import MyClass1.h

[轉載]5 approach to load UIView from Xib

很好的文章  算是替初學者解惑!!!

部門專案目前採用文中1~3項(其中2跟3一樣),一直很困惑view跟controller為何綁那麼緊@@
拜讀這篇文章後比較有感覺了,但還沒完全掌握,先轉載過來

Allocates a new instance

// 舊版寫法
MyClass *item = [[MyClass alloc] init];

// 新版寫法
MyClass  *item = [MyClass new];

Append NSString

Java和JavaScript的  +  會幫你自動依照型別判斷你要的是String Append或Numeric Operate

若是在Objective-C進行String Append,請用如下方式
NSString *message = [NSString stringWithFormat:@"%@%@\r%@%@",@"ID:", @"1", @"Name:", @"Karen"];

輸出結果會是這樣
ID:1
Name:Karen
在Name換行是因為加了\r


2015/7/2補充
如果要在字串中加入空白,可參考這篇 NSString stringByPaddingToLength example ios

Convert an HTMLCollection to an Array

HTMLCollection is NOT an array !
The HTMLCollection interface represents a generic collection (array-like object) of elements (in document order).

So... If u want to use the method of Array like slice(), u need to convert HTMLCollection in advance.


Solution 
var convertedArray = Array.prototype.slice.call(YourHtmlCollection)
var convertedArray = [].slice.call(YourHtmlCollection);
var convertedArray = slice.call(YourHtmlCollection);

Iterate HashMap to get key and value

單取key或value就不說了~直接for each
若要同時取key & value可以這樣寫

HashMap< String, MyData> myHashMap;
for (Map.Entry< String, MyData> entry : map.entrySet()) {
    String key = entry.getKey();
    MyData value = entry.getValue();
}