2

列挙型プロパティ swipeDirection を追加した UIViewController から派生した単純な ViewController があります。コードでは通常、self.swipeDirection と呼んでいますが、あるインスタンスで、誤って self.SwipeDirection と入力したことに気付きました。

定義にジャンプすると、正しい変数が取得され、コードが正しくコンパイルおよび実行されるため、正しい変数が使用されていることを確認できます。

.h ファイル

enum EScrollDirection
{
    E_SCROLL_DIRECTION_NONE = 0,
    E_SCROLL_DIRECTION_LEFT,
    E_SCROLL_DIRECTION_RIGHT,
    E_SCROLL_DIRECTION_UP,
    E_SCROLL_DIRECTION_DOWN
};
typedef enum EScrollDirection EScrollDirection;
@interface ProcessingViewController : UIViewController <UIScrollViewDelegate>
@property(nonatomic, assign)EScrollDirection swipeDirection;
@end

.m ファイル

- (void)scrollViewDidScroll:(UIScrollView *)sender
{
    CGPoint offset = self.graphScrollView.contentOffset;
    self.SwipeDirection = [self getScrollDirection:self.previousTouchPoint endPoint:self.graphScrollView.contentOffset];
// ...
}
4

1 に答える 1

3

理論的には、すべてのプロパティは、デフォルトで次のルールを持つセッター メソッド呼び出しにコンパイルされます。セッター名propertysetProperty:(プロパティ名の最初の文字が大文字になることに注意してください)。したがって、次の両方のコード行

self.SwipeDirection = ...
self.swipeDirection = ...

既存の setter メソッドにコンパイルされます

[self.setSwipeDirection:...]

コンパイラの観点からは同等です。

注 - (デフォルトの) getter メソッドでは同じことが機能せず、次の行はコンパイルされません。

NSLog(@"%d", self.SwipeDirection);
于 2013-05-21T09:03:29.237 に答える