سؤال

لذلك ، لدي فصل (IkimageView) مع مجموعة من الخصائص.

أعلم أن عرض setProp: Bool يعود باطل. لكن:

BOOL b = view.prop = NO;

يبدو أنه يعمل. إذا كان لدي وظيفة f () التي تُرجع منطقية ، فهل يعرف أي شخص ما إذا كان هذا يفعل حقًا:

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

أو

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

أو

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

أسأل لأنه عندما أفعل:

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

أحصل على "B هو 1 ، التمرير هو 0" (مما يعني أن Sethashorizontalscroller فشل لسبب ما ، ولكن B يتم تعيينه بشكل صحيح)

لكن:

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

أحصل على "B IS 0 Scroll IS 0"

هذا محير للغاية بالنسبة لي. (أيضًا ، إذا كان بإمكان أي شخص أن يخبرني كيف فشل إعداد العقار على نعم ، لكنه ينجح في إعداد B ... ومع ذلك لا توجد أخطاء ...

هل كانت مفيدة؟

المحلول

إنه يفعل

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

كان هناك مناقشة لهذا قبل شحن العقارات. يعتقد بعض الشعبية أن هذا يجب أن يكون خطأ في التجميع لتجنب الغموض.

ربما يكون من الأفضل تجنب البناء بالكامل.

نصائح أخرى

يبدو أنه ليس خطأ. الكود التالي:

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

تنتج هذه الطرق المكالمات:

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

كما ترى [b text] لا يسمى في هذه السلسلة :(

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top