簡體   English   中英

iPhone iOS4突破性應用

[英]iphone iOS4 breaking app

自一年多以來,我有一個運行良好的應用程序。

我最初是使用iphone iOS 2.2.1開發的,並經過測試並一直銷售到3.2,沒有問題。

現在它無法在iOS4上啟動。

該應用程序為UIPickerView使用了非標准尺寸(我不認為這是問題所在,只是提及它,因為您會在控制台輸出中看到一些抱怨)。 它還會提供以前未報告的NSAutoreleasePool警告。

但罪魁禍首似乎是在將界面調整為新的iphone屏幕分辨率(至少從控制台獲得的分辨率)時

我知道我必須做一些自己的研究,但iOS4推出以來進展甚微,我非常專注於學習和開發我的第一個android應用程序(因此,我沒有測試過此特定代碼,一年后此應用程序只賣了每天復制幾本),我認為在這里問一下是否有人知道某些信息或已經碰到它沒有什么害處。

首先,這是使用XCODE 3.2.3和BASE SDK 3.2構建並運行時的控制台輸出,沒有問題

2010-06-22 23:25:55.619金屬和材料[82956:207] *******可訪問性狀態已更改:在2010-06-22 23:25:55.710金屬和材料[82956:207] ****** ****正在為xxxxxxxxx加載AX

但是嘗試在iOS4上運行可帶來以下好處:

2010-06-22 23:15:52.488金屬和材料[80149:207] *******可訪問性狀態已更改:開
2010-06-22 23:15:52.546金屬和材料[80149:207] **********為以下商品加載AX:XXXXXXX ************
2010-06-22 23:15:53.003metalsandmaterials [80149:207] *-[NSAutoreleasePool版本]:此池已被釋放,請勿將其耗盡(雙重釋放)。
2010-06-22 23:15:53.005metalsandmaterials [80149:207] * -[NSAutoreleasePool版本]:此池已被釋放,請勿將其耗盡(雙重釋放)。
2010-06-22 23:15:53.008金屬和材料[80149:207]-[UIPickerView setFrame:]:無效的高度值50.0固定為162.0

就在這兒! [UIIageView比例尺]

2010-06-22 23:15:53.011金屬和材料[80149:207]-[UIImageView比例尺]:無法識別的選擇器已發送到實例0x5ac47a0
2010-06-22 23:15:53.013metalsandmaterials [80149:207] ***由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'-[UIImageView比例尺]:無法識別的選擇器已發送至實例0x5ac47a0'

初次調用堆棧:

0 CoreFoundation 0x025f5919 異常預處理+ 185
1 libobjc.A.dylib 0x027435de objc_exception_throw + 47
2 CoreFoundation 0x025f742b-[NSObject(NSObject)didNotRecognizeSelector:] + 187
3 CoreFoundation 0x02567116 ___forwarding_ + 966
4 CoreFoundation 0x02566cd2 _CF_forwarding_prep_0 + 50
5 UIKit 0x0039a8e3-[UIImageView setImage:] + 250
6 UIKit 0x0039b63e-[UIImageView initWithImage:] + 161
7 UIKit 0x05f286ce-[UIImageViewAccessibility(SafeCategory)initWithImage:] + 70
8種金屬和材料0x0000bf09-[TVCResults init] + 1841
9種金屬和材料0x00002b8c-[UIVCalcHolder init] + 258
10種金屬和材料0x00002758-[CalcTestAppDelegate應用程序DidFinish啟動:] + 649
11 UIKit 0x002d759c-[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1252
12 UIKit 0x002d99a1-[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 346
13 UIKit 0x002e3452-[UIApplication handleEvent:withNewEvent:] + 1958
14 UIKit 0x002dc074-[UIApplication sendEvent:] + 71
15 UIKit 0x002e0ac4 _UIApplicationHandleEvent + 7495
16圖形服務0x02de1afa PurpleEventCallback + 1578
17 CoreFoundation 0x025d6dc4 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 52
18 CoreFoundation 0x02537737 __CFRunLoopDoSource1 + 215
19 CoreFoundation 0x025349c3 __CFRunLoopRun + 979
20 CoreFoundation 0x02534280 CFRunLoopRunSpecific + 208
21 CoreFoundation 0x025341a1 CFRunLoopRunInMode + 97
22 UIKit 0x002d9226-[UIApplication _run] + 625
23 UIKit 0x002e4b58 UIApplicationMain + 1160
24種金屬和材料0x000024ac主+ 230
25種金屬和材料0x000023bd開始+ 53
26 ??? 0x00000001 0x0 +1
)引發'NSException'實例后終止調用
程序接收到信號:“ SIGABRT”。

那么,這種scale方法對於uiimageview是新的嗎? 為什么不起作用? 有人遇到過這個嗎?

絕對有幫助

最好的祝福
大衛

通常在釋放對象但您仍在嘗試使用它時,會收到一條消息“ xxxxxx無法識別選擇器yyyyyy”。 那時因為內存是隨機的,所以系統認為它是其他某種隨機對象(例如UIImage)。 因此,這是一條紅色的鯡魚,表示其他問題不正確,並且您過度釋放了一個對象。

除非您正在使用自定義自動釋放池進行某些操作,否則您將無法獲得那些奇怪的自動釋放消息。 放心,您在代碼中使用NSAutoreleasePool做什么?

我認為它們可能與“無法識別選擇器”消息有關,因為您可能因此而過度釋放了一些東西。

好吧,對於第一個關於NSAutoreleasePool的問題,我將使用儀器,以便您可以跟蹤額外的消耗/釋放來自何處。

第二個問題dosNotRecognizeSelector告訴您被調用的選擇器不存在(或丟失了作用域)。 我將使用調試器,以便再次跟蹤該代碼的執行情況。

好的,如果在UIImageView的子類中添加-(void)scale並使用此新類,我就離開了。 經過測試,可以在2.2.1、3.2和ios4上正常運行,無論是在模擬器,帶ios4的iphone touch 3g和帶ios3.2的ipad上。

我仍然需要了解iphone4,看看是否遇到一些奇怪的布局問題(我仍然相信,當OS想要將其炸毀在新的視網膜顯示屏上時,這些問題就會出現)。

不在美國會讓它變得有點困難

難道我是在某處將imageView的image屬性設置為另一個UIImageView(而不是UIImage)嗎?

畢竟,UIImageView不會響應:scale,但是UIImage會響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM