2012-09-21 38 views
5

Khối Obj-C là thứ tôi mới sử dụng lần đầu tiên gần đây. Tôi đang cố gắng để hiểu được cú pháp như sau khối:Cú pháp khối đối tượng-C

Trong tập tin tiêu đề:

@property (nonatomic, copy) void (^completionBlock)(id obj, NSError *err); 

Trong tập tin chính:

-(void)something{ 

id rootObject = nil; 

// do something so rootObject is hopefully not nil 

    if([self completionBlock]) 
     [self completionBlock](rootObject, nil); // What is this syntax referred to as? 
} 

Tôi đánh giá cao sự giúp đỡ!

+0

IMO, có vẻ như rõ ràng hơn những gì đang diễn ra nếu bạn sử dụng cú pháp chấm. 'if (self.completionBLock) self.completionBlock (rootObject, nil);' – zpasternack

Trả lời

2

của một tài sản block, bạn có thể đặt một khối khi chạy.

Đây là cú pháp để thiết lập

Vì nó là kiểu void, vì vậy trong lớp học mà bạn có thể thiết lập một phương pháp mà theo mã sau

self.completionBlock = ^(id aID, NSError *err){ 
    //do something here using id aID and NSError err 
}; 

Với mã sau đây bạn có thể gọi phương thức/block set trước đây.

if([self completionBlock])//only a check to see if you have set it or not 
{ 
     [self completionBlock](aID, nil);//calling 
} 
+0

Cảm ơn bạn rất nhiều! – JaredH

5

Khối là Đối tượng.

Trong trường hợp của bạn bên trong phương pháp bạn đang kiểm tra nếu khối không phải là con số không và sau đó bạn đang gọi nó đi qua hai đối số cần thiết ...

Hãy ghi nhớ rằng khối này được gọi là trong cùng một cách ac chức năng là ...

Dưới đây tôi đã chia tuyên bố trong hai để cho bạn hiểu rõ hơn:

[self completionBlock] //The property getter is called to retrieve the block object 
    (rootObject, nil); //The two required arguments are passed to the block object calling it 
+0

Cảm ơn bạn đã giải thích! – JaredH

Các vấn đề liên quan