2014年4月29日 星期二

XCode Plugins

介紹XCode Plugin的網站
Xcode Plugins
Xcode Plugin Listing
Useful Xcode 4/5 Plugins
The best Xcode plugins

相信有不少人有在用Cocoapod來管理Lib
那XCode Plugin應該也需要有一個管理工具來進行管理
大推!!Alcatraz~~(他的Github
安裝方式如下:
curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh

首推!! 安裝後真的方便滴

KSImageNamed
當寫道
[UIImage imageNamed:];
它能夠AutoComplete列出可用的圖片名,以及圖片預覽

OMColorSense
使用到UIColor相關Code,提供顏色預覽圖
以及可以調用內建的的調色盤選擇想要的顏色
最後說明:自己看Youtube比較快

HOStringSense
可以預覽字串效果,字數

Lin
多國語系的部分做得相當不錯
提供類似於Search(感覺就是多國語系的AutoComplete)
使用前請注意:After installation Enable Lin will appear in Edit menu.

VVDocumenter-Xcode
提供Java like的文件註解
使用方式:///

SCXcodeMiniMap
提供Sublime Text2 like的MiniMap

重點提醒:安裝玩任何一個Plugin之後記得要重新開XCode

列出一些自己看起來應該不錯用的
https://github.com/mikr/XcAddedMarkup
https://github.com/trawor/XToDo
https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin
https://github.com/JugglerShu/XVim
https://github.com/qfish/XAlign
http://injectionforxcode.com/

Cocoapods:
https://github.com/kattrali/cocoapods-xcode-plugin
https://github.com/ricobeck/KFCocoaPodsPlugin
https://github.com/Galeas/CocoaPodUI

2014年4月20日 星期日

又碰到C的Struct -- 2 pragma pack

取自:史丹利部落格

自然對界

  struct是一種複合資料類型,其構成元素既可以是基本資料類型(如int、long、float等)的變數,也可以是一些複合資料類型(如array、struct、union等)的資料單元。對於結構體,編譯器會自動進行成員變數的對齊,以提高運算效率。缺省情況下,編譯器為結構體的每個成員按其自然對界(natural alignment)條件分配空間。各個成員按照它們被聲明的順序在記憶體中順序存儲,第一個成員的位址和整個結構的位址相同。

  自然對界(natural alignment)即默認對齊方式,是指按結構體的成員中size最大的成員對齊。


指定對界

  一般地,可以通過下面的方法來改變缺省的對界條件:

  • 使用虛擬指令#pragma pack (n),編譯器將按照n個位元組對齊;
  • 使用虛擬指令#pragma pack (),取消自定義位元組對齊方式。

  注意:如果#pragma pack (n)中指定的n大於結構體中最大成員的size,則其不起作用,結構體仍然按照size最大的成員進行對界。
#pragma pack (n)
struct naturalalign {
    char a;
    int b;
    char c;
};
//當n為4、8、16時,其對齊方式均一樣,sizeof(naturalalign)的結果都等於12。而當n為2時,其發揮了作用,使得sizeof(naturalalign)的結果為8。

又碰到C的Struct -- 1 Struct & Union

取自:史丹利部落格

為了解決從MCU透過藍牙傳遞過來的資料

遇到封包裡不同的OPCODE

採取的封包解析也相對應不同

struct structA {
    int a;
    char b;
};

struct structB {
    char a;
    short b;
};

struct structC {
    int a;
    char b;
    float c;
}

struct CommuPacket {
    int iPacketType;  //報文類型標誌
    union {      //每次傳送的是三種報文中的一種,使用union
        struct structA packetA;
        struct structB packetB;
        struct structC packetC;
    };
};

switch(recvCommuPacket.iPacketType) {
    case PACKET_A:
        … //A類報文處理
        break;
    case PACKET_B:
        …  //B類報文處理
        break;
    case PACKET_C:
        … //C類報文處理
        break;
}


不錯的 IOS 教學文

教學BLOG
APPCODA

IOS Dev Weekly

Cocoa is my girlfriend

蠻多客製VIEW:Think & Build

大陸BLOG破船:破船之家

大陸BLOG飘飘白云:飘飘白云

objc.io

iOS app/Ruby/Rails Developer高見龍

Furnace IOS程式設計中文學習網站

教學文
How To Efficiently Display Large Amounts of Data on iOS Maps


Lib
Use custom fonts for your iOS projects directly in Interface Builder, the WYSIWYG way MoarFonts
RBBAnimation
illustrations 相關:Inkpad

2014年4月16日 星期三

不錯的語法高亮介紹

介紹15種語法高亮工具
美化代码的15个代码语法高亮工具

教你如何把highlight.js應用到你的網頁上

IOS 藍牙筆記 -- 1 前置動作

1.搞清楚要使用哪種版本藍牙進行跟蘋果設備連線

A方案:BT 3.0
可以從下面這篇知道,如果要用BT3.0跟蘋果設備連接,藍牙晶片必須有MFi
Apples external accessory (bluetooth) only for MFI devices?
相對應IOS使用的Lib 為 External Accessory framework
除此之外,應該去Apple 網站的MFi Q&A
分別看一下Who needs to join the MFi Program以及Who does not need to join the MFi Program,了解說你事實上需不需要MFi

EA相關不錯的文章:
Works with iPhone
MFI & External Accessory Framework

B方案:BLE(BT 4.0)

先參考一些跟BLE相關的文章

BLE(Bluetooth Low Energy)簡介
傳統BT與BLE架構有什麼不一樣呢?
關於藍牙 4.0 的一些基本想法
Findings on Bluetooth connectivity between iPhone & Android

一個可以獲得藍牙裝置Mac Address的第三方套件
liblockdown.dylib

還沒搞懂是幹啥用的
beamit

感覺起來是功能強大且齊全的藍牙Lib
PS:需要JailBroken
btstack