其他(II)



1. 對于語句NSString*obj = [[NSData alloc] init]; ,編譯時和運行時obj分別是什么類型?

編譯時是NSString類型
運行時是NSData類型



2. 看下面的程序,三次NSLog會輸出什么?為什么?

    NSMutableArray* ary = [[NSMutableArray array] retain];
    NSString *str = [NSString stringWithFormat:@"test"];
    [str retain];
    [ary addObject:str];
    NSLog(@"%ld", (unsigned long)[str retainCount]);
    [str retain];
    [str release];
    [str release];
    NSLog(@"%ld", (unsigned long)[str retainCount]);
    [ary removeAllObjects];
    NSLog(@"%ld", (unsigned long)[str retainCount]);

輸出:
-1
-1
-1
? -1代表沒有引用計數(shù)或者引用計數(shù)非常大,因為str是字符串,字符串在常量區(qū)(引用計數(shù)發(fā)生在堆區(qū)),沒有引用計數(shù)。
? 引用計數(shù)為-1,這可以理解為NSString實際上是一個字符串常量,是沒有引用計數(shù)的(或者它的引用計數(shù)是一個很大的值(使用%lu可以打印查看),對它做引用計數(shù)操作沒實質(zhì)上的影響)
詳解



.




.




.




.




.




.


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容