简体   繁体   English

UITouchView setText在MonoTouch iOS中崩溃

[英]UITextView setText Crash in monotouch ios

I use xamarin studio to debug the uitableview page, there is one UITextview in UITableviewCell, I will load data from web service and set text for UITextview, But when I load data in several times, It will crash in set text for UITextview and the crash log is this: 我使用xamarin Studio调试uitableview页面,UITableviewCell中有一个UITextview,我将从Web服务加载数据并为UITextview设置文本,但是当我多次加载数据时,它将在UITextview的设置文本中崩溃并崩溃日志是这样的:


Incident Identifier: 4144836D-E8DC-434C-8552-FA63A686D6D4
CrashReporter Key:   a35f5169df95f13a4431b55a8b6e41aa6576396e
Hardware Model:      iPad3,1
Process:         MobileLaw [238]
Path:            /var/mobile/Applications/6FDEF7FD-D46D-4F81-9D41-D920C2B98ECF/MobileLaw.app/MobileLaw
Identifier:      MobileLaw
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-09-10 09:18:02.395 +0800
OS Version:      iPhone OS 5.1.1 (9B206)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_INVALID_ADDRESS at 0x91b6732e
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x30a5832c __pthread_kill + 8
1   libsystem_c.dylib               0x32fe9208 pthread_kill + 48
2   libsystem_c.dylib               0x32fe2298 abort + 88
3   MobileLaw                       0x013b03fa 0x1000 + 20640762
4   MobileLaw                       0x0136a832 0x1000 + 20355122
5   libsystem_c.dylib               0x32ff37e6 _sigtramp + 42
6   UIKit                           0x30d68b82 -[UITextView webViewDidChange:] + 166
7   Foundation                      0x370074f8 __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_0 + 12
8   CoreFoundation                  0x37dc3540 ___CFXNotificationPost_block_invoke_0 + 64
9   CoreFoundation                  0x37d4f090 _CFXNotificationPost + 1400
10  Foundation                      0x36f7b3e4 -[NSNotificationCenter postNotificationName:object:userInfo:] + 60
11  WebCore                         0x3119b47a WebThreadPostNotification + 62
12  WebKit                          0x3760959e WebEditorClient::respondToChangedContents() + 30
13  WebCore                         0x31365ea6 WebCore::Editor::setTextAsChildOfElement(WTF::String const&, WebCore::Element*) + 738
14  WebKit                          0x37603d00 -[WebFrame(WebPrivate) setText:asChildOfElement:] + 188
15  UIKit                           0x30d693ac -[UITextView setText:] + 300
16  MobileLaw                       0x001cd708 0x1000 + 1885960
17  MobileLaw                       0x00f4f57c 0x1000 + 16049532
18  MobileLaw                       0x00f4c73c 0x1000 + 16037692
19  MobileLaw                       0x00f4bc98 0x1000 + 16034968
20  MobileLaw                       0x008e5094 0x1000 + 9322644
21  MobileLaw                       0x0136c02c 0x1000 + 20361260
22  MobileLaw                       0x013d7858 0x1000 + 20801624
23  MobileLaw                       0x0133954c 0x1000 + 20153676
24  UIKit                           0x30c30ef4 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 540
25  UIKit                           0x30c2ffd2 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1070
26  UIKit                           0x30c2f75c -[UITableView layoutSubviews] + 200
27  UIKit                           0x30bd3f30 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 176
28  CoreFoundation                  0x37d561f4 -[NSObject performSelector:withObject:] + 36
29  QuartzCore                      0x331eba9e -[CALayer layoutSublayers] + 210
30  QuartzCore                      0x331eb6b6 CA::Layer::layout_if_needed(CA::Transaction*) + 210
31  QuartzCore                      0x331ef83c CA::Context::commit_transaction(CA::Transaction*) + 220
32  QuartzCore                      0x331ef578 CA::Transaction::commit() + 308
33  QuartzCore                      0x331e74b2 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 50
34  CoreFoundation                  0x37dcbb14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
35  CoreFoundation                  0x37dc9d50 __CFRunLoopDoObservers + 252
36  CoreFoundation                  0x37dca0aa __CFRunLoopRun + 754
37  CoreFoundation                  0x37d4d49e CFRunLoopRunSpecific + 294
38  CoreFoundation                  0x37d4d366 CFRunLoopRunInMode + 98
39  GraphicsServices                0x36230432 GSEventRunModal + 130
40  UIKit                           0x30bfecce UIApplicationMain + 1074
41  MobileLaw                       0x001d394c 0x1000 + 1911116
42  MobileLaw                       0x00dbcf54 0x1000 + 14401364
43  MobileLaw                       0x008e5094 0x1000 + 9322644
44  MobileLaw                       0x0136c02c 0x1000 + 20361260
45  MobileLaw                       0x013d7858 0x1000 + 20801624
46  MobileLaw                       0x013da578 0x1000 + 20813176
47  MobileLaw                       0x013ddea4 0x1000 + 20827812
48  MobileLaw                       0x0138272c 0x1000 + 20453164
49  MobileLaw                       0x014291e8 0x1000 + 21135848
50  MobileLaw                       0x0001f888 0x1000 + 125064

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x30a483a8 kevent + 24
1   libdispatch.dylib               0x34722f04 _dispatch_mgr_invoke + 708
2   libdispatch.dylib               0x34722c22 _dispatch_mgr_thread + 30

Thread 2:
0   libsystem_kernel.dylib          0x30a48054 semaphore_wait_trap + 8
1   MobileLaw                       0x0137d4d8 0x1000 + 20432088
2   MobileLaw                       0x0141bcf4 0x1000 + 21081332
3   MobileLaw                       0x01406ffe 0x1000 + 20996094
4   MobileLaw                       0x013705e2 0x1000 + 20379106
5   MobileLaw                       0x013b55f0 0x1000 + 20661744
6   libsystem_c.dylib               0x32faa72e _pthread_start + 314
7   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 3 name:  WebThread
Thread 3:
0   libsystem_kernel.dylib          0x30a580d8 __psynch_mutexwait + 24
1   libsystem_c.dylib               0x32f9e674 pthread_mutex_lock + 376
2   WebCore                         0x311324e8 _ZL17_WebTryThreadLockb + 208
3   WebCore                         0x311327ec _ZL14WebRunLoopLockP19__CFRunLoopObservermPv + 24
4   CoreFoundation                  0x37dcbb14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
5   CoreFoundation                  0x37dc9d50 __CFRunLoopDoObservers + 252
6   CoreFoundation                  0x37dca16a __CFRunLoopRun + 946
7   CoreFoundation                  0x37d4d49e CFRunLoopRunSpecific + 294
8   CoreFoundation                  0x37d4d366 CFRunLoopRunInMode + 98
9   WebCore                         0x311d5c9c _ZL12RunWebThreadPv + 396
10  libsystem_c.dylib               0x32faa72e _pthread_start + 314
11  libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 4:
0   libsystem_kernel.dylib          0x30a58628 __semwait_signal + 24
1   libsystem_c.dylib               0x32faeb1a nanosleep + 138
2   MobileLaw                       0x0136fb18 0x1000 + 20376344
3   MobileLaw                       0x014007ae 0x1000 + 20969390
4   MobileLaw                       0x01406ffe 0x1000 + 20996094
5   MobileLaw                       0x013705e2 0x1000 + 20379106
6   MobileLaw                       0x013b55f0 0x1000 + 20661744
7   libsystem_c.dylib               0x32faa72e _pthread_start + 314
8   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 5:
0   libsystem_kernel.dylib          0x30a58068 __psynch_cvwait + 24
1   libsystem_c.dylib               0x32faaa46 _pthread_cond_wait + 634
2   libsystem_c.dylib               0x32fb1574 pthread_cond_timedwait + 40
3   MobileLaw                       0x01415a00 0x1000 + 21056000
4   MobileLaw                       0x0136e480 0x1000 + 20370560
5   MobileLaw                       0x01405fde 0x1000 + 20991966
6   MobileLaw                       0x008a8210 0x1000 + 9073168
7   MobileLaw                       0x008a855c 0x1000 + 9074012
8   MobileLaw                       0x008a76dc 0x1000 + 9070300
9   MobileLaw                       0x008a4168 0x1000 + 9056616
10  MobileLaw                       0x008e5094 0x1000 + 9322644
11  MobileLaw                       0x0136c02c 0x1000 + 20361260
12  MobileLaw                       0x013d7858 0x1000 + 20801624
13  MobileLaw                       0x013d795e 0x1000 + 20801886
14  MobileLaw                       0x01407014 0x1000 + 20996116
15  MobileLaw                       0x013705e2 0x1000 + 20379106
16  MobileLaw                       0x013b55f0 0x1000 + 20661744
17  libsystem_c.dylib               0x32faa72e _pthread_start + 314
18  libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 6:
0   libsystem_kernel.dylib          0x30a58570 __select + 20
1   libsystem_kernel.dylib          0x30a49d2c select + 44
2   MobileLaw                       0x01379722 0x1000 + 20416290
3   MobileLaw                       0x01401290 0x1000 + 20972176
4   MobileLaw                       0x01406ffe 0x1000 + 20996094
5   MobileLaw                       0x013705e2 0x1000 + 20379106
6   MobileLaw                       0x013b55f0 0x1000 + 20661744
7   libsystem_c.dylib               0x32faa72e _pthread_start + 314
8   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 7:
0   libsystem_kernel.dylib          0x30a4806c semaphore_timedwait_trap + 8
1   MobileLaw                       0x0137d47a 0x1000 + 20431994
2   MobileLaw                       0x01402158 0x1000 + 20975960
3   MobileLaw                       0x01406ffe 0x1000 + 20996094
4   MobileLaw                       0x013705e2 0x1000 + 20379106
5   MobileLaw                       0x013b55f0 0x1000 + 20661744
6   libsystem_c.dylib               0x32faa72e _pthread_start + 314
7   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 8:
0   libsystem_kernel.dylib          0x30a4806c semaphore_timedwait_trap + 8
1   MobileLaw                       0x0137d47a 0x1000 + 20431994
2   MobileLaw                       0x01402158 0x1000 + 20975960
3   MobileLaw                       0x01406ffe 0x1000 + 20996094
4   MobileLaw                       0x013705e2 0x1000 + 20379106
5   MobileLaw                       0x013b55f0 0x1000 + 20661744
6   libsystem_c.dylib               0x32faa72e _pthread_start + 314
7   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 9:
0   libsystem_kernel.dylib          0x30a4806c semaphore_timedwait_trap + 8
1   MobileLaw                       0x0137d47a 0x1000 + 20431994
2   MobileLaw                       0x01402158 0x1000 + 20975960
3   MobileLaw                       0x01406ffe 0x1000 + 20996094
4   MobileLaw                       0x013705e2 0x1000 + 20379106
5   MobileLaw                       0x013b55f0 0x1000 + 20661744
6   libsystem_c.dylib               0x32faa72e _pthread_start + 314
7   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 10 name:  com.apple.NSURLConnectionLoader
Thread 10:
0   libsystem_kernel.dylib          0x30a48004 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x30a481fa mach_msg + 50
2   CoreFoundation                  0x37dcb3ec __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x37dca124 __CFRunLoopRun + 876
4   CoreFoundation                  0x37d4d49e CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x37d4d366 CFRunLoopRunInMode + 98
6   Foundation                      0x36f88bb2 +[NSURLConnection(Loader) _resourceLoadLoop:] + 302
7   Foundation                      0x36f88a7a -[NSThread main] + 66
8   Foundation                      0x3701c58a __NSThread__main__ + 1042
9   libsystem_c.dylib               0x32faa72e _pthread_start + 314
10  libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 11 name:  WebCore: CFNetwork Loader
Thread 11:
0   libsystem_kernel.dylib          0x30a48004 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x30a481fa mach_msg + 50
2   CoreFoundation                  0x37dcb3ec __CFRunLoopServiceMachPort + 120
3   CoreFoundation                  0x37dca124 __CFRunLoopRun + 876
4   CoreFoundation                  0x37d4d49e CFRunLoopRunSpecific + 294
5   CoreFoundation                  0x37d4d366 CFRunLoopRunInMode + 98
6   WebCore                         0x311ff0d2 _ZN7WebCoreL15runLoaderThreadEPv + 122
7   libsystem_c.dylib               0x32faa72e _pthread_start + 314
8   libsystem_c.dylib               0x32faa5e8 thread_start + 0

Thread 12:
0   libsystem_kernel.dylib          0x30a58cd4 __workq_kernreturn + 8
1   libsystem_c.dylib               0x32fa4f36 _pthread_wqthread + 610
2   libsystem_c.dylib               0x32fa4cc8 start_wqthread + 0

Thread 13:
0   libsystem_kernel.dylib          0x30a58cd4 __workq_kernreturn + 8
1   libsystem_c.dylib               0x32fa4f36 _pthread_wqthread + 610
2   libsystem_c.dylib               0x32fa4cc8 start_wqthread + 0

Thread 14:
0   libsystem_kernel.dylib          0x30a58cd4 __workq_kernreturn + 8
1   libsystem_c.dylib               0x32fa4f36 _pthread_wqthread + 610
2   libsystem_c.dylib               0x32fa4cc8 start_wqthread + 0

Thread 0 crashed with ARM Thread State:
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000001      r3: 0x00000000
    r4: 0x00000006    r5: 0x3e924d98      r6: 0x01455f20      r7: 0x2fdfc644
    r8: 0x00000000    r9: 0x00000000     r10: 0x01455f46     r11: 0x0357f6c0
    ip: 0x00000148    sp: 0x2fdfc638      lr: 0x32fe920f      pc: 0x30a5832c
  cpsr: 0x00000010

Binary Images:
    0x1000 -  0x14d0fff +MobileLaw armv7  <a8f2805092f63491948848f582058ecf> /var/mobile/Applications/6FDEF7FD-D46D-4F81-9D41-D920C2B98ECF/MobileLaw.app/MobileLaw
 0x2dd5000 -  0x2dd5fff +MobileSubstrate.dylib armv6  <a059eb894e623ec09d63294c525ff7a2> /Library/MobileSubstrate/MobileSubstrate.dylib
 0x2f11000 -  0x2f12fff +SubstrateLoader.dylib armv6  <eec9b813adfd3bdf86702ae8bbf0f404> /Library/Frameworks/CydiaSubstrate.framework/Libraries/SubstrateLoader.dylib
0x2fe15000 - 0x2fe36fff  dyld armv7  <77eddfd654df393ba9c95ff01715fd08> /usr/lib/dyld

In C# , @Dharmbir answer translate to C# ,@ Dharmbir答案转换为

InvokeOnMainThread (()=> {
    textView.Text = "your text";
});

I think you are doing this in background thread. 我认为您正在后台线程中执行此操作。 So thats totally wrong according to apple because apple don't allow to touch UIKit in background thread. 因此,根据苹果公司的说法,这是完全错误的,因为苹果公司不允许在后台线程中触摸UIKit。 So you need to set text like this 所以你需要这样设置文本

[self performSelectorOnMainThread:@selector(setTextOnTextView) withObject:nil waitUntilDone:NO];

- (void)setTextOnTextView
{
// ---------- set your text here -------

}

Here is my code : the button setTitle would't crash, it will crash on setText.and the other question is when I debug the program, It will crash on the second load data.When I run the program without debug, It will crash little on the second load data,after several times load data it will crash 这是我的代码:setTitle按钮不会崩溃,它将在setText上崩溃。另一个问题是当我调试程序时,它将在第二次加载数据时崩溃。当我在没有调试的情况下运行程序时,它将崩溃很少加载第二次加载数据,几次加载后将崩溃

string values = ValueList[curCellNumber] == null ? "" : ValueList[curCellNumber].ToString();
UITableViewCell cell = tableView.DequeueReusableCell(cellIdentity);
UITextView textView = cell.ViewWithTag(10001) as UITextView;
UIButton btnSelects=cell.ViewWithTag(10002) as UIButton;
if(btnSelects != null){
    btnSelects.SetTitle(curCellNumber,UIControlState.Normal);
}
this.InvokeOnMainThread(() => {
    if (textView != null) {
        textView.Text = values;
        textView.Delegate = new TextViewDelegate(DataTableName, FieldList[curCellNumber], TID);
    }
});

Whatever you change on UI, it has to be done within UI thread. 无论您对UI进行什么更改,都必须在UI线程中完成。 In other words, If you execute some code in some other thread, and want to make changes to UI, you should put it into 换句话说,如果您在其他线程中执行某些代码,并且想要对UI进行更改,则应将其放入

this.InvokeOnMainThread(() => { });

Also, scope of textView is problematic. 另外,textView的范围是有问题的。 Monotouch garbage collector is kind of strange in this situations and in some cases it will collect it before you would expect. 在这种情况下,Monotouch垃圾收集器有点奇怪,在某些情况下,它将在您期望之前收集它。 Declare it as global or class property (or property of your custom table cell). 将其声明为全局或类属性(或自定义表单元格的属性)。 In your code, there is a rush: Will mainthread access textView before GetCell (or whatever method where textView is declared) ends and GC collects textView? 在您的代码中,有个急事:主线程会在GetCell(或声明了textView的任何方法)结束并且GC收集textView之前访问textView吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM