0

1 年以上前のリリース以来、正常に動作しているアプリケーションがあります。

私はもともと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 metalsandmaterials[82956:207] ******** アクセシビリティ ステータスが変更されました: On 2010-06-22 23:25:55.710 metalsandmaterials[82956:207] ****** **** xxxxxxxxx の AX を読み込んでいます

しかし、iOS4 で実行しようとすると、次のような美しさが得られます。

2010-06-22 23:15:52.488 metalsandmaterials[80149:207] ******** アクセシビリティ ステータスが変更されました: On
2010-06-22 23:15:52.546 metalsandmaterials[80149:207] ****** **** Loading AX for: XXXXXXX ************
2010-06-22 23:15:53.003 metalsandmaterials[80149:207] * -[NSAutoreleasePool release]: このプールは既に解放されています、排出しないでください(ダブルリリース)。
2010-06-22 23:15:53.005 metalsandmaterials[80149:207] *
-[NSAutoreleasePool リリース]: このプールは既に解放されています。排出しないでください (二重解放)。
2010-06-22 23:15:53.008 metalsandmaterials[80149:207] -[UIPickerView setFrame:]: 無効な高さの値 50.0 が 162.0 に固定されました

ここだ!【UIIageViewスケール】

2010-06-22 23:15:53.011 metalsandmaterials[80149:207] -[UIImageView スケール]: 認識されないセレクターがインスタンス 0x5ac47a0 に送信されました
2010-06-22 23:15:53.013 metalsandmaterials[80149:207]キャッチされない例外 'NSInvalidArgumentException' へ、理由: '-[UIImageView スケール]: 認識されないセレクターがインスタンス 0x5ac47a0 に送信されました'

Call stack at first throw:
(
0 CoreFoundation 0x025f5919 exceptionPreprocess + 185
1 libobjc.A.dylib 0x027435de objc_exception_throw + 47
2 CoreFoundation 0x025f742b -[NSObject(NSObject) doesNotRecognizeSelector:] + 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 metalsandmaterials 0x0000bf09 -[TVCResults init] + 1841
9 metalsandmaterials 0x00002b8c -[UIVCalcHolder init] + 258
10 metalsandmaterials 0x00002758 -[CalcTestAppDelegate applicationDidFinishLaunching:] + 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 GraphicsServices 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 metalsandmaterials 0x000024ac main + 230
25 metalsandmaterials 0x000023bd start + 53
26 ??? 0x00000001 0x0 + 1
) 'NSException' のインスタンスをスローした後に呼び出された終了
プログラムはシグナル "SIGABRT" を受け取りました。
殺す
_

このscaleメソッドは uiimageview にとって新しいものですか? なぜうまくいかないのですか?誰かがすでにこれに遭遇しましたか?

どんな助けも非常に高く評価されています

よろしく
デビッド

4

4 に答える 4

3

通常、オブジェクトが解放されたにもかかわらず、まだ使用しようとしているときに、「xxxxxx はセレクター yyyyyy を認識しません」というメッセージが表示されます。その時点で、メモリはランダムであるため、システムはそれが他のランダムな種類のオブジェクト (UIImage など) であると見なします。したがって、これはニシンであり、何か他の問題があり、オブジェクトを過剰にリリースしていることを示しています。

カスタム自動解放プールで何かをしていない限り、これらの奇妙な自動解放メッセージを受け取る方法はありません。コードで NSAutoreleasePool を使用して何をしていますか?

これが原因で物事を過剰にリリースしている可能性があるため、おそらく「セレクターを認識しない」メッセージに関連していると思います。

于 2010-06-23T06:09:51.830 に答える
0

OK、UIImageViewのサブクラスに-(void)scaleを追加し、この新しいクラスを使用する場合は、そのままにしておきます。テスト済みで、2.2.1、3.2、およびios4で正常に動作します。どちらもシミュレーターで、iphone touch 3gとios4、ipadとios3.2です。

私はまだiphone4を手に入れて、奇妙なレイアウトの問題が発生するかどうかを確認する必要があります(OSが新しい網膜ディスプレイに物事を爆破したいときに問題が発生したと私はまだ信じています)。

アメリカにいないと少し大変になりますが

于 2010-06-25T22:57:14.150 に答える
0

imageView の image プロパティを (UIImage ではなく) 別の UIImageView に設定したのではないでしょうか?

結局、UIImageView は :scale に応答しませんが、UIImage は応答します。

于 2011-04-07T18:09:37.273 に答える
0

さて、NSAutoreleasePool の最初の問題については、追加のドレイン/リリースがどこから来ているかを追跡できるように、インストゥルメントを使用します。

2 番目の問題 doesNotRecognizeSelector は、呼び出されているセレクターが存在しない (またはスコープが失われた) ことを示しています。デバッガーを使用して、そのコードの実行を再度トレースできるようにします。

于 2010-06-23T04:29:03.160 に答える