[問題] view controller間傳遞block並執行

看板MacDev作者 (skill)時間11年前 (2014/01/07 15:23), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
我有兩個 view controller a, b (b 裡面有個變數 block型態變數: block) a 會執行 ViewControllerB *b = [[ViewControllerB alloc] ...略]; b.block = ^{ [self doSomething]; //這裡的self = a }; [self presentViewController: b ...略]; ------------------------------------------------------------- b 的 viewDidAppear: 裡面會執行 self.block(); //即執行a給的block,結果此行出錯了...orz 請問要怎樣解決這樣的問題? QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.21.125.247

01/07 15:25, , 1F
ps. 沒有error message...直接出現(lldb) 盪住
01/07 15:25, 1F

01/07 16:40, , 2F
你的block的property參數是啥?
01/07 16:40, 2F
@property (nonatomic, assign) void (^block)(); 有關係嗎 冏? ※ 編輯: issuemylove 來自: 211.21.125.247 (01/07 16:44)

01/08 08:46, , 3F
有關係block也是會被release的,你要將它改為copy就可以了
01/08 08:46, 3F

01/08 08:49, , 4F
另外是我的建議,viewController不要用block,只用delegate
01/08 08:49, 4F

01/08 08:49, , 5F
就好了
01/08 08:49, 5F
...阿 對後...orz,是說當初我設定屬性時, retain 不給我加 才使用assign @@|||, 這也好像是我第一次對有property變數的object使用 assign 渾然忘記 assign 的效果 謝謝你! ※ 編輯: issuemylove 來自: 211.21.125.247 (01/08 10:32)
文章代碼(AID): #1Iowje5T (MacDev)
文章代碼(AID): #1Iowje5T (MacDev)