加載圖像並記錄其大小的小程序。它是用ARC支持,llvm 3.0編譯的。我在iPod 4.2上運行它,並得到一些有趣的數字...該程序以「發佈」模式編譯爲「-Os」(xcode中「發佈」的默認優化)。整個事情不會發生在模擬器中。它看起來像@autoreleasepool結合循環腐敗堆棧...注意,我必須用這個簡單的例子來隔離這個帖子的問題。使用@autoreleasepool(ARC,使用llvm 3.0編譯,最快,最小[-Os]編譯)堆棧損壞
--------->
int main(int argc, char *argv[])
{
@autoreleasepool
{
return UIApplicationMain(argc, argv, nil,
@"AppDelegate");
}
}
@interface AppDelegate : UIWindow <UIApplicationDelegate>
@end
@implementation AppDelegate
-(void)loadImageAndLogValues
{
// image from bundle 256x26
UIImage *image = [UIImage imageNamed:@"Image.png"];
for (int i = 0; i < 1; i++)
{
NSLog(@"size=%@", NSStringFromCGSize(image.size));
NSLog(@"w=%f", image.size.width);
NSLog(@"h=%f", image.size.height);
NSLog(@"------------------------");
}
}
-(BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.frame = [UIScreen mainScreen].bounds;
self.backgroundColor = [UIColor blueColor];
[self makeKeyAndVisible];
[self loadImageAndLogValues];
UIGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(loadImageAndLogValues)];
[self addGestureRecognizer:tap];
return YES;
}
@end
<------------------
這是我點擊一下屏幕後的輸出(!攻後登錄時,「H」是錯誤的圖像的高度是26 ...):
2011-10-21 01:54:48.677 Tmp[2522:307] size={256, 26}
2011-10-21 01:54:48.696 Tmp[2522:307] w=256.000000
2011-10-21 01:54:48.705 Tmp[2522:307] h=26.000000
2011-10-21 01:54:48.715 Tmp[2522:307] ------------------------
2011-10-21 01:54:50.576 Tmp[2522:307] size={256, 26}
2011-10-21 01:54:50.582 Tmp[2522:307] w=256.000000
2011-10-21 01:54:50.589 Tmp[2522:307] h=256.000000
2011-10-21 01:54:50.595 Tmp[2522:307] ------------------------
現在,我從main()中刪除@autoreleasepool:
int main(int argc, char *argv[])
{
//@autoreleasepool
//{
return UIApplicationMain(argc, argv, nil,
@"AppDelegate");
//}
}
運行該程序並點擊。還在爲 「H」 錯誤值,但調用直接從 「loadImageAndLogValues」 當 「的application:didFinishLaunchingWithOptions:」 ......
2011-10-21 02:02:08.222 Tmp[2544:307] size={256, 26}
2011-10-21 02:02:08.240 Tmp[2544:307] w=256.000000
2011-10-21 02:02:08.250 Tmp[2544:307] h=256.000000
2011-10-21 02:02:08.259 Tmp[2544:307] ------------------------
2011-10-21 02:04:59.097 Tmp[2544:307] size={256, 26}
2011-10-21 02:04:59.103 Tmp[2544:307] w=256.000000
2011-10-21 02:04:59.109 Tmp[2544:307] h=26.000000
2011-10-21 02:04:59.115 Tmp[2544:307] ------------------------
... ARC + LLVM 3.0 + -Os + @autoreleasepool +這麼( ;;)+ image.size.width/height不適合我:)請幫忙!謝謝!
你有沒有向蘋果bug報告系統報告缺陷? –
不,但我張貼在蘋果開發者論壇:https://devforums.apple.com/message/564415#564415到目前爲止沒有答案。 – debleek63
如果沒有人知道您的bug,您如何預期它被修復?簡單地詢問一些隨機論壇不會有幫助,你必須填寫問題報告。 –