1

私は最近、UIActionSheet実際に使用可能なデリゲート セレクターを表示する前にキャッシュすることを発見しました。

本当に知る必要があるときに、デリゲートが特定のセレクターに応答するかどうかを判断しないのはなぜですか? 本当に[delegate respondsToSelector:@selector()]実行が遅いですか?この種のデザイン パターンを独自のコードで使用する必要がありますか? どんなアイデアでも大歓迎です!

UIActionSheet.h の flags 構造体は次のとおりです。

struct {
    unsigned int numberOfRows:7;
    unsigned int delegateAlertSheetButtonClicked:1;
    unsigned int delegateDidPresentAlertSheet:1;
    unsigned int delegateDidDismissAlertSheet:1;
    unsigned int hideButtonBar:1;
    unsigned int alertStyle:3;
    unsigned int dontDimBackground:1;
    unsigned int dismissSuspended:1;
    unsigned int dontBlockInteraction:1;
    unsigned int sheetWasPoppedUp:1;
    unsigned int sheetWasShown:1;
    unsigned int animating:1;
    unsigned int hideWhenDoneAnimating:1;
    unsigned int layoutWhenDoneAnimating:1;
    unsigned int titleMaxLineCount:2;
    unsigned int bodyTextMaxLineCount:3;
    unsigned int runsModal:1;
    unsigned int runningModal:1;
    unsigned int addedTextView:1;
    unsigned int addedTableShadows:1;
    unsigned int showOverSBAlerts:1;

    unsigned int showMinTableContent:1;
    unsigned int bodyTextTruncated:1;
    unsigned int orientation:3;
    unsigned int popupFromPoint:1;
    unsigned int inPopover:1;
    unsigned int delegateBodyTextAlignment:1;
    unsigned int delegateClickedButtonAtIndex:1;
    unsigned int delegateClickedButtonAtIndex2:1;
    unsigned int delegateCancel:1;
    unsigned int delegateCancel2:1;
    unsigned int delegateWillPresent:1;
    unsigned int delegateWillPresent2:1;
    unsigned int delegateDidPresent:1;
    unsigned int delegateDidPresent2:1;
    unsigned int delegateWillDismiss:1;
    unsigned int delegateWillDismiss2:1;
    unsigned int delegateDidDismiss:1;
    unsigned int delegateDidDismiss2:1;
    unsigned int dontCallDismissDelegate:1;
    unsigned int useAutomaticKB:1;
    unsigned int twoColumnsLayoutMode:7; // one column || even width (leaves empty space) || first button wider || last button wider
    unsigned int threeColumnsLayoutMode:7; // one column || even width (leaves empty space) || first button wider || last button wider
    unsigned int shouldHandleFirstKeyUpEvent:1; // when presenting with hardware KB we have to handle the first key up event we get so we don't end up repeating the last key
    unsigned int cancelWhenDoneAnimating:1;
    unsigned int useThreePartButtons:1; // phone numbers layout
    unsigned int useTwoPartButtons:1; // doc interaction layout
    unsigned int displaySelectedButtonGlyph:1;
    int indexOfSelectedButton:7; // default -1 (no checkmark) otherwise will display a checkbox (this for the airtunes action sheet)
    unsigned int useCustomSelectedButtonGlyph:1;
} _modalViewFlags;
4

0 に答える 0