positionについて調べる
公開日:
:
最終更新日:2013/11/12
cocoa
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
Core Reference Libraryでpositionについて調べてみたところ、positionというメソッドを持っているクラスは2つ。
- CALayer
- NSPositionalSpecifier
それぞれが持っているpositionについて詳細に調べてみる。
CALayer
@property CGPoint position
NSPositionalSpecifier
- (NSInsertionPosition)position
- CALayerのpositionはCGPointを返す
- NSPositionalSpecifierのpositionはNSInsertionPositionを返す
なるほど。先ほど
[[[menusLayer sublayers]
objectAtIndex:selectedIndex] position]
で出た
MenuView.m:160: warning: multiple methods named '-position' found
NSScriptObjectSpecifiers.h:191: warning: using '-(NSInsertionPosition)position'
CALayer.h:598: warning: also found '-(CGPoint)position'
MenuView.m:160: error: incompatible type for argument 1 of 'setPosition:'
というエラーはこれが原因か?
[[[menusLayer sublayers]
objectAtIndex:selectedIndex] position]
でpositionを呼び出している対象のオブジェクトのクラスを調べる。
NSLog(@"%@", [[menusLayer sublayers] objectAtIndex:selectedIndex]);
2008-04-12 17:16:30.012 CoreAnimationMenu[51596:10b] <CATextLayer: 0x13f2b950>
CATextLayer型か。
- CALayer
- CATextLayer
- NSPositionalSpecifier
の継承チェーンを調べてみる。
- NSObject -> CALayer
- NSObject -> CALayer -> CATextLayer
- NSObject -> NSPositionalSpecifier
うーん、じゃあ何でCATextLayerに対してpositionを呼び出しただけで
MenuView.m:160: warning: multiple methods named '-position' found
NSScriptObjectSpecifiers.h:191: warning: using '-(NSInsertionPosition)position'
CALayer.h:598: warning: also found '-(CGPoint)position'
なんて言われてしまうのだろうか?
関連記事
- PREV
- 返り値の異なるメソッドを呼び分ける
- NEXT
- 文字コード超研究