最近看《Effective ObjectveC》,講到”動態繫結”和”靜態繫結”,覺得挺好,記錄下來。
下面是一段靜態繫結的程式碼,在編譯期間就決定了在執行時所呼叫的函式。
C
#import <stdio.h> void printHello() { printf("Hello World"); } void printGoodbye() { printf("Goodbye"); } void doSth(int type) { if (type == 0) { printHello(); } else { printGoodbye(); } }
同樣的功能,用”動態繫結”來實現,要在執行時才確定呼叫的函式。
#import <stdio.h>
void printHello()
{
printf("Hello World");
}
void printGoodbye()
{
printf("Goodbye");
}
void doSth(int type)
{
void (*func)();
if (type == 0) {
func = printHello;
} else {
func = printGoodbye;
}
func();
}