5

だから、私はたくさんのプロパティを持つクラス(IKImageView)を持っています。

ビューsetProp:BOOLがvoidを返すことを知っています。でも:

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」になります(これは、setHasHorizo​​ntalScrollerが何らかの理由で失敗しているが、bが正しく設定されていることを意味します)

しかし:

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

「bは0、スクロールは0」と表示されます

これは私にとって非常に混乱しています。(また、プロパティのYESへの設定がどのように失敗するかを誰かに教えてもらえれば、bの設定に成功します...それでもエラーは発生しません...

4

2 に答える 2

5

やってる

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

プロパティが出荷される前に、これについての議論がありました。一部の人々は、あいまいさを避けるために、これはコンパイル エラーであるべきだと考えていました。

建設を完全に避けるのがおそらく最善です。

于 2010-01-19T21:56:35.840 に答える
0

バグではないようです。次のコード:

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

このメソッド呼び出しを生成します。

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

ご覧のとおり[b text]、このチェーンでは呼び出されません:(

于 2015-12-12T21:46:52.857 に答える