2010-01-19 10 views
5

Vì vậy, tôi đã có một lớp (IKImageView) với một loạt các thuộc tính.Nhiều nhiệm vụ có bị hack trong Obj-C không?

Tôi biết rằng khung nhìn setProp: BOOL trả về khoảng trống. Tuy nhiên:

BOOL b = view.prop = NO; 

dường như hoạt động. Nếu tôi có một hàm f() trả về một boolean, không ai biết nếu điều này thực sự được thực hiện:

[view setProp:f()]; 
Bool b = [view getProp]; 

hoặc

[view setProp: f()]; 
Bool b = f(); 

hoặc

BOOL TMP = f(); 
[view setProp: TMP]; 
BOOL b = TMP; 

Tôi hỏi vì khi tôi làm:

BOOL b = view.hasHorizontalScroller = YES; 
NSLog(@"b is %d scroll is %d", b, [view getHasHorizontalScroller]); 

Tôi nhận được "b là 1, sc cuộn là 0" (Có nghĩa là setHasHorizontalScroller là không vì một lý do, nhưng b được thiết lập một cách chính xác)

nhưng:

BOOL b; 
[view setHasHorizontalScroller: YES]; 
b = [view getHasHorizontalScroller]; 
NSLog(@"b is %d scroll is %d", b, [view getHasHorizontalScroller]); 

tôi nhận được "b là 0 cuộn là 0"

Đây là rất khó hiểu với tôi. (Ngoài ra, nếu có ai có thể cho tôi biết cách thiết lập của tài sản để YES thất bại, nhưng sau đó nó thành công trong việc thiết b ... nhưng không có lỗi đưa ra ...

+1

file một lỗi, xin vui lòng. Ví dụ tối thiểu sẽ rất hữu ích. http://bugreport.apple.com/ – bbum

+0

đó là loại ví dụ tối thiểu ... Tôi đã thêm mã vào IKImageViewDemo đi kèm với hệ thống ... và tôi vừa gửi một lỗi, cảm ơn đề xuất. –

Trả lời

5

Nó làm

BOOL TMP = f(); 
[view setProp: TMP]; 
BOOL b = TMP; 

. có thảo luận về điều này trước khi tính vận chuyển một số dân gian nghĩ này phải là một lỗi biên dịch để tránh sự nhập nhằng

Nó có lẽ là tốt nhất để tránh việc xây dựng hoàn toàn

+0

Ok, cũng ít nhất là giải thích những gì đang xảy ra, nếu không phải lý do tại sao setter thất bại ... cảm ơn. –

0

Hình như không phải là một lỗi sau mã...:

a.text = b.text = c.text; 

sản xuất phương pháp này gọi:

// [c text] 
// [b setText:] 
// [a setText:] 

Như bạn thấy [b text] không được gọi trong chuỗi này :(