IOS--開發基礎知識

來源:互聯網
上載者:User

IOS--開發基礎知識

對象在運行時擷取其類型的能力稱為內省。內省可以有多種方法實現。判斷物件類型-(BOOL) isKindOfClass: classObj判斷是否是這個類或者這個類的子類的執行個體-(BOOL) isMemberOfClass: classObj 判斷是否是這個類的執行個體執行個體一:   Person *person = [[Person alloc] init];      //父類   Teacher *teacher = [[Teacher alloc] init];  //子類        //YES      if ([teacher isMemberOfClass:[Teacher class]]) {          NSLog(@"teacher Teacher類的成員");     }     //NO      if ([teacher isMemberOfClass:[Person class]]) {         NSLog(@"teacher Person類的成員");     }     //NO      if ([teacher isMemberOfClass:[NSObject class]]) {         NSLog(@"teacher NSObject類的成員");     }  執行個體二:Person *person = [[Person alloc] init];  Teacher *teacher = [[Teacher alloc] init];    //YES   if ([teacher isKindOfClass:[Teacher class]]) {      NSLog(@"teacher 是 Teacher類或Teacher的子類");  }  //YES   if ([teacher isKindOfClass:[Person class]]) {      NSLog(@"teacher 是 Person類或Person的子類");  }  //YES   if ([teacher isKindOfClass:[NSObject class]]) {      NSLog(@"teacher 是 NSObject類或NSObject的子類");  }  isMemberOfClass判斷是否是屬於這類的執行個體,是否跟父類有關係他不管,所以isMemberOfClass指到父類時才會為NO;對方法進行判斷:-(BOOL) respondsToSelector: selector 判讀執行個體是否有這樣方法+(BOOL) instancesRespondToSelector:  判斷類是否有這個方法。此方法是類方法,不能用在類的對象執行個體三:// YES   teacher是對象if ( [teacher respondsToSelector: @selector( setName: )] == YES ) {      NSLog(@"teacher responds to setSize: method" );  } // YES   Teacher是類if ( [Teacher instancesRespondToSelector: @selector(teach)] == YES ) {      NSLog(@"Teacher instance responds to teach method");  }  

2:IOS 開發中判斷字串是否為空白字元的方法

- (BOOL) isBlankString:(NSString *)string {    if (string == nil || string == NULL) {        return YES;    }    if ([string isKindOfClass:[NSNull class]]) {        return YES;    }    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {        return YES;    }    return NO;} 

3:刪除Caches檔案夾的內容

// 檔案管理者NSFileManager *mgr = [NSFileManager defaultManager];// 緩衝路徑NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];[mgr removeItemAtPath:caches error:nil];

4:計算某個檔案夾或檔案的大小

/** *  @ 15-06-17 09:06:22 * *  @brief  計算檔案或檔案夾的大小 因為osx 檔案夾是沒有大小這個屬性 要通過各個檔案計算得到 subpathsAtPath可以獲得檔案夾下面所有的檔案 包含子檔案夾裡面 *  @param filePath 比如緩衝caches的路徑 *  @return 大小 */- (NSInteger)fileSize:(NSString *)filePath{    NSFileManager *mgr = [NSFileManager defaultManager];    // 判斷是否為檔案    BOOL dir = NO;    BOOL exists = [mgr fileExistsAtPath:filePath isDirectory:&dir];    // 檔案\檔案夾不存在    if (exists == NO) return 0;        if (dir) { // self是一個檔案夾        // 遍曆caches裡面的所有內容 --- 直接和間接內容        NSArray *subpaths = [mgr subpathsAtPath:filePath];        NSInteger totalByteSize = 0;        for (NSString *subpath in subpaths) {            // 獲得全路徑            NSString *fullSubpath = [filePath stringByAppendingPathComponent:subpath];            // 判斷是否為檔案            BOOL dir = NO;            [mgr fileExistsAtPath:fullSubpath isDirectory:&dir];            if (dir == NO) { // 檔案                totalByteSize += [[mgr attributesOfItemAtPath:fullSubpath error:nil][NSFileSize] integerValue];            }        }        return totalByteSize;    } else { // 是一個檔案        return [[mgr attributesOfItemAtPath:filePath error:nil][NSFileSize] integerValue];    }}調用傳入下面的路徑:NSFileManager *mgr = [NSFileManager defaultManager];// 緩衝路徑NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.