[問題] 命令列可順利執行,但GUI無法順利執行

看板MacDev作者 (旅人的足跡)時間13年前 (2012/07/15 22:13), 編輯推噓8(804)
留言12則, 4人參與, 最新討論串1/1
這個程式是要用來當教學文章的範例 可是有個問題研究許久不知道改怎麼解決的問題 使用 Mac 10.5.8 與 Xcode 3.1.4 程式碼如下網頁(發展過程中檔案,非最終版本) http://pydoing.blogspot.tw/2012/07/blog-post.html 利用 Interface Builder 建立的介面如第一張圖 有五個程式檔案 demo.m 是在命令列測試 Encrypt.h 與 Encrypt.m GUI 則是用 EncryptController.h 與 EncryptController.m 程式均可順利編譯, demo.m 可以順利執行跑出結果 可是 GUI 在執行 - (IBAction) encode: (id)sender; 之時,無法順利執行,也就是說 GUI 執行 Encrypt 的 toEncode 發生錯誤 (彩球空轉,像是程式當掉,沒有錯誤訊息 >_<) 想請教前輩,這到底是什麼樣的錯誤? 或著說,從一開始我的設計方式就是錯的? ps: 此程式的 Java 版本可參考 http://pydoing.blogspot.tw/2011/05/java-guide.html -- 半個月工作,半個月旅行,自由自在的生活 簡簡單單就好,不必想得太複雜....... 歡迎來到http://kaichingchang.blogspot.com/《旅人的足跡》 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.145.214 ※ 編輯: monomorium 來自: 118.169.145.214 (07/15 22:16)

07/15 22:26, , 1F
錯誤訊息?
07/15 22:26, 1F

07/15 22:28, , 2F
彩球空轉,沒有錯誤訊息 >_<
07/15 22:28, 2F
※ 編輯: monomorium 來自: 118.169.145.214 (07/15 22:33)

07/15 22:48, , 3F
該不會IBAction沒連好..
07/15 22:48, 3F

07/15 22:51, , 4F
Action沒連是完全沒反應,連到錯的method應該會當掉,彩
07/15 22:51, 4F

07/15 22:52, , 5F
球一直轉感覺是無限迴圈 @.@
07/15 22:52, 5F
我也覺得是無限迴圈,可是命令列又可以順利執行 ※ 編輯: monomorium 來自: 118.169.145.214 (07/15 23:01)

07/16 00:11, , 6F
有試過breakpoint嗎
07/16 00:11, 6F
基本上 Debugger 視窗指出最後 EncryptController.m 執行停在 NSString *other = [encrypt toEncode: inputText]; 也就是 Encrypt.m 的 r = [r stringByAppendingString: [cArray objectAtIndex: ct - 97]]; 這跟反覆測試後,預測錯誤發生點是一樣的 至於 Breakpoints 視窗,沒有提示訊息,目前還不太懂作用說 xd

07/16 14:19, , 7F
會不會是@property的問題,造成有些東西還沒用就release?
07/16 14:19, 7F

07/16 14:19, , 8F
我不確定,猜的
07/16 14:19, 8F

07/16 14:21, , 9F
還有我不是很確定,不過你的carray, oarray不需要alloc嘛
07/16 14:21, 9F
我把 setArray 修改成 - (void) setArray { oArray = [[NSArray alloc] initWithObjects: @"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", @"j", @"k", @"l", @"m", @"n", @"o", @"p", @"q", @"r", @"s", @"t", @"w", @"v", @"u", @"x", @"y", @"z", nil]; cArray = [[NSMutableArray alloc] initWithCapacity: 26]; int i, d, ci, count, m; for (i = 0, count = self.c;i < n;i++) { ci = count; d = ci * self.a + self.b; m = d % self.n; [cArray addObject: [oArray objectAtIndex: m]]; count++; } } 成功跑出結果了,感謝各位 :) ※ 編輯: monomorium 來自: 118.169.133.163 (07/16 15:04) ※ 編輯: monomorium 來自: 118.169.133.163 (07/16 15:53) ※ 編輯: monomorium 來自: 118.169.133.163 (07/16 15:59)

07/16 17:04, , 10F
alloc用完之後要release掉喔...
07/16 17:04, 10F

07/20 13:26, , 11F
arc的話不能自己寫release吧@@
07/20 13:26, 11F
arc 好像是 xcode 4.2 以後才能用 這裡有個問題,在 autorelease pool 中有需要 release 嗎 還是 autorelease 就可以了? 或是連 autorelease 也不需要? 另外一個問題是,嗯,我改回不用 alloc 突然也可以用了 xd ※ 編輯: monomorium 來自: 118.169.142.117 (07/20 14:38)

07/20 23:49, , 12F
arc應該是4以後就有了 沒注意到你用3
07/20 23:49, 12F
文章代碼(AID): #1G0i_pl_ (MacDev)
文章代碼(AID): #1G0i_pl_ (MacDev)