程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> iphone-如何在塊中獲取實體變量?

iphone-如何在塊中獲取實體變量?

編輯:編程綜合問答
如何在塊中獲取實體變量?

訪問block中的實體變量。但是在block中得到EXC_BAC_ACCESS。工程裡沒用ARC。

.h file

@interface ViewController : UIViewController{
    int age; // an instance variable
}



.m file

typedef void(^MyBlock) (void);

MyBlock bb;

@interface ViewController ()

- (void)foo;

@end

@implementation ViewController

- (void)viewDidLoad{
    [super viewDidLoad];

    __block ViewController *aa = self;

    bb = ^{
        NSLog(@"%d", aa->age);// EXC_BAD_ACCESS here
        // NSLog(@"%d", age); // I also tried this code, didn't work
    };

    Block_copy(bb);

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(10, 10, 200, 200);
    [btn setTitle:@"Tap Me" forState:UIControlStateNormal];
    [self.view addSubview:btn];

    [btn addTarget:self action:@selector(foo) forControlEvents:UIControlEventTouchUpInside];
}

- (void)foo{
    bb();
}

@end

為什麼會這樣?

最佳回答:


你訪問的block塊已經在堆棧上分配了;你需要為塊指定bb。bb也需要放在類的實體變量中。

  bb= Block_copy(bb);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved