
大哥,那句話意識是1個APP至少2個人審核。蘋果的意思是審核嚴謹,任務重。
揭秘蘋果App Store審核團隊,知己知彼好過審蘋果說到審核團隊,很多人就冒火,他們拒絕應用的理由花式上百,讓人抓狂卻無可奈何!他們神秘低調,除了申訴渠道,不和外界做任何的溝通。 他們是群什么樣的人呢?又是如何評判App的...
而調用[obj autoreplease]或者@autoreleasepool{}都會發生push操作,前者將obj壓棧,后者將POOL_SENTINEL標記壓棧。
各個線程 Autorelease 對象的內存管理最近和 bestswifter 、kuailejim 搞了一套模擬面試,然后不管是應屆生還是工作兩三年的高級工程師都對下面這幾個問題比較懵逼,可能是開發中用到的不多,在這里淺...
對第三個問題,我覺得說的不是很清楚。而且很多博客對線程和autoreleasepool的關系都描述成"一個線程對應一個autoreleasepool"也不恰當,對autoreleasepool和AutoreleasepoolPage關系描述也不恰當。
實際一個線程對應一個autoreleasepool堆棧,而這個堆棧則是通過AutoreleasepoolPage的雙向鏈表(數據結構)進行實現的。所以對于第三個問題“子線程對Autorelease對象如何處理”,子線程中在第一次push的時候創建AutoreleasepoolPage雙鏈表,也就是autoreleasepool堆棧,然后所有的autoreleasepool后者說Autorelease對象都被壓入到棧里,只是每個autoreleasepool之間都有一個POOL_SENTINEL標記界限(棧層次)。而調用[obj autoreplease]或者@autoreleasepool{}都會發生push操作。
各個線程 Autorelease 對象的內存管理最近和 bestswifter 、kuailejim 搞了一套模擬面試,然后不管是應屆生還是工作兩三年的高級工程師都對下面這幾個問題比較懵逼,可能是開發中用到的不多,在這里淺...
```
__weak id ref = nil;
@Implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *str;
@autoreleasepool {
{
NSString *str = [[NSString alloc] initWithFormat:@"aaa"];
ref = str;
}
NSLog(@"-.ref = %@(%p)", ref, ref);
NSString *str = [@[@"1", @"2", @"3", @"4"] componentsJoinedByString:@"|"];
// ref = str;
NSLog(@"0.ref = %@(%p)", ref, ref);
}
NSLog(@"1.ref = %@(%p)", ref, ref);
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"2.ref = %@(%p)", ref, ref);
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"3.ref = %@(%p)", ref, ref);
}
@EnD
```
這面這段代碼的輸出結果:
```
2017-09-29 14:37:19.073666+0800 SJAdditionsTest[1820:1188820] -.ref = aaa(0xa000000006161613)
2017-09-29 14:37:19.073804+0800 SJAdditionsTest[1820:1188820] 0.ref = aaa(0xa000000006161613)
2017-09-29 14:37:19.073898+0800 SJAdditionsTest[1820:1188820] 1.ref = aaa(0xa000000006161613)
2017-09-29 14:37:19.074108+0800 SJAdditionsTest[1820:1188820] 2.ref = aaa(0xa000000006161613)
2017-09-29 14:37:19.085965+0800 SJAdditionsTest[1820:1188820] 3.ref = aaa(0xa000000006161613)
```
和預期的完全不一樣,大神能解釋下嗎?
各個線程 Autorelease 對象的內存管理最近和 bestswifter 、kuailejim 搞了一套模擬面試,然后不管是應屆生還是工作兩三年的高級工程師都對下面這幾個問題比較懵逼,可能是開發中用到的不多,在這里淺...