作者monomorium (旅人的足跡)
看板MacDev
標題[問題] 命令列可順利執行,但GUI無法順利執行
時間Sun Jul 15 22:13:01 2012
這個程式是要用來當教學文章的範例
可是有個問題研究許久不知道改怎麼解決的問題
使用 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)
1F:推 Blueshiva:錯誤訊息? 07/15 22:26
2F:→ monomorium:彩球空轉,沒有錯誤訊息 >_< 07/15 22:28
※ 編輯: monomorium 來自: 118.169.145.214 (07/15 22:33)
3F:推 kiii210:該不會IBAction沒連好.. 07/15 22:48
4F:推 Blueshiva:Action沒連是完全沒反應,連到錯的method應該會當掉,彩 07/15 22:51
5F:→ Blueshiva:球一直轉感覺是無限迴圈 @.@ 07/15 22:52
我也覺得是無限迴圈,可是命令列又可以順利執行
※ 編輯: monomorium 來自: 118.169.145.214 (07/15 23:01)
6F:推 kiii210:有試過breakpoint嗎 07/16 00:11
基本上 Debugger 視窗指出最後 EncryptController.m 執行停在
NSString *other = [encrypt toEncode: inputText];
也就是 Encrypt.m 的
r = [r stringByAppendingString: [cArray objectAtIndex: ct - 97]];
這跟反覆測試後,預測錯誤發生點是一樣的
至於 Breakpoints 視窗,沒有提示訊息,目前還不太懂作用說 xd
7F:推 peacedove:會不會是@property的問題,造成有些東西還沒用就release? 07/16 14:19
8F:→ peacedove:我不確定,猜的 07/16 14:19
9F:→ peacedove:還有我不是很確定,不過你的carray, oarray不需要alloc嘛 07/16 14:21
我把 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)
10F:推 Blueshiva:alloc用完之後要release掉喔... 07/16 17:04
11F:推 peacedove:arc的話不能自己寫release吧@@ 07/20 13:26
arc 好像是 xcode 4.2 以後才能用
這裡有個問題,在 autorelease pool 中有需要 release 嗎
還是 autorelease 就可以了?
或是連 autorelease 也不需要?
另外一個問題是,嗯,我改回不用 alloc 突然也可以用了 xd
※ 編輯: monomorium 來自: 118.169.142.117 (07/20 14:38)
12F:推 peacedove:arc應該是4以後就有了 沒注意到你用3 07/20 23:49