2015年2月9日 星期一

好用的.h property用 convenient method 提供value

.h

// convinent methods
@property (readonly, nonatomic) BOOL isConnected;


.m

-(BOOL)isConnected
{
    return self.currentPeripheral.state == CBPeripheralStateConnected;
}


其實也就是複寫isConnected由property自動生成的getter method啦!

.h的readonly property怎麼write?

對外readonly而內部要write怎辦?

只要在m裡面加上同名的property就好,或是寫上 _propertyNam,前面加上_

原理是加上 _就等於直接存取instance verbel,所以就可以寫值了

平常的dot寫法不行或是[self setPropertyName]不行是因為上面兩種其實都是call method 去寫的,也就是其實是語法糖衣,當你h的宣告為readonly,編譯器不會自動幫你寫上setter,所以用上面兩種不行!

需要直接用instance verbel做寫入~


---------------

當你寫property後,編譯器已經自動幫你寫好setter和getter,還有synthesize ~ 所以可以直接用_去訪問instance verbal.

2014年6月14日 星期六

d013

#include
#include
#include

int main(void) {
    char s[999];
    unsigned long int store[100];
    int num;
    int i;
    while( gets(s)!=0 ) {
        memset(store, 0, 100);
        num = atoi(s);
        store[0]=1;
        store[1]=1;
        for (i=2; i
            store[i] = store[i-2]+store[i-1];
        }
        printf("%lu\n",store[num-1]);
    }
    return 0;

}

tip:
1.當數字太大時的儲存與表示方法
http://stackoverflow.com/questions/3209909/how-to-printf-unsigned-long-in-c

d039

#include
#include
#include

int main(void) {
    char s[999];
    int num;
    int i;
    while( gets(s)!=0 ) {
        num = atoi(s);
        for (i=2; i<=sqrt(num); i++) {
            if(num % i == 0){
                printf("not prime\n");
                break;
            }
        }
        if (i>sqrt(num)) {
           printf("prime\n");
        }
    }
    return 0;

}

d012

#include
#include

int main(void) {
    char s[999];
    char s2[999];
    int stelen;
    int i;
    int count;
    while( gets(s)!=0 ) {
        count = 0;
        memset(s2, 0, 999);
        stelen = strlen(s);
        for (i=stelen-1; i>=0; i--) {
            s2[count] = s[i];
            count++;
        }
        if(!strcmp(s,s2)){
            printf("Yes\n");
        }else printf("No\n");
    }
    return 0;

}

tips:
1.單純結合d001與d011
2.ISO C90 forbids mixed declarations and code 變數不要宣告在太後面的地方,最好在邏輯之前。
3.一樣記得同樣的char array你在去宣告一次並不會變成新的array,要重複使用就要用memset去empty array。