2011年3月15日火曜日

Xcode 4 と __attribute__((deprecated))


Xcode 4 が出たので早速ためしてみた。使っているうちに気付いたのは、 Deprecated になったメソッドに打ち消し線がつくようになったこと。いままではどのメソッドが deprecated になったかは、補完時にはわからなかったのでうれしい。ついでに自分で作ったクラスでも利用できないか調べてみると、 意外と簡単で deprecated にしたいメソッドに __attribute__((deprecated))を付ければいいだけみたい。



// 今開いてたファイルからコピペ(笑)
//
// MessageCell.h
// LogViewer
//
// Created by mtakagi on 10/12/21.
// Copyright 2010 http://outofboundary.web.fc2.com/. All rights reserved.
//

#import <UIKit/UIKit.h>

@class LogFetchedMessage;
@class GradientBackgroundView;

@interface MessageCell : UITableViewCell {
LogFetchedMessage *message;
IBOutlet UILabel *messageBody;
IBOutlet UIView *headerView;
IBOutlet UILabel *sender;
IBOutlet UILabel *facility;
IBOutlet UILabel *time;
IBOutlet UILabel *level;
}

@property BOOL isWhiteBackgroundColor;

+ (CGFloat)rowHeight:(NSString *)labelText;

// こんな感じでメソッドに __attribute__((deprecated)) を追加。
- (void)setMessage:(LogFetchedMessage *)m __attribute__((deprecated));
- (LogFetchedMessage *)message;
- (UIView *)contentView;
- (UIImage *)screenshot;

@end



こんな風にヘッダファイルにあるメソッドの宣言に __attribute__((deprecated)) を付けると

メソッドの補完時に deprecated なメソッドに打ち消し線が付くようになります! これは覚えておくと便利かもしれません!
ちなみに clang の __attribute__((deprecated)) では


__attribute__((deprecated("This method is deprecated!")))


と書くことでコンパイル時にメッセージを表示することができるみたいです。

0 件のコメント:

コメントを投稿