美文网首页
修改Xcode自带代码片段CodeSnippets

修改Xcode自带代码片段CodeSnippets

作者: _moses | 来源:发表于2018-08-31 22:23 被阅读4次

    Xcode默认只能编辑用户自建的代码片段,而系统自带的代码片段在Xcode中是不支持直接编辑的。但是可以通过以下方法进行编辑修改

    1. 先找到文件存放位置,Xcode自带代码片段存放位置:
      Xcode 9 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets
      Xcode 10 /Applications/Xcode.app/Contents/PlugIns/IDESourceEditor.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets
    2. 将该文件复制出来将后缀改为plist,打开编辑该文件即可

    例:由于加@符Xcode不会有代码提示,可以将@protocol、@interface、@implementation中的@符去掉,这样Xcode自带的代码片段就可以起作用,不用自己写了。
    附:(一些常用的Xcode自带OC代码片段)

    initialize
    
        + (void)initialize
        {
            if (self == [<#ClassName#> class]) {
                <#statements#>
            }
        }
    
    initWithFrame
    
        - (instancetype)initWithFrame:(CGRect)frame
        {
            self = [super initWithFrame:frame];
            if (self) {
                <#statements#>
            }
            return self;
        }
    
    init
        - (instancetype)init
        {
            self = [super init];
            if (self) {
                <#statements#>
            }
            return self;
        }
    
    forin
    
        for (<#type *object#> in <#collection#>) {
            <#statements#>
        }
    
    delloc
    
        - (void)dealloc
        {
            <#statements#>
        }
    
    description
    
        - (NSString *)description
        {
            return [NSString stringWithFormat:@"<#format string#>", <#arguments#>];
        }
    
    debugDescription
    
        - (NSString *)debugDescription
        {
            return [NSString stringWithFormat:@"<%@: %p> <#additional format string#>", [self class], self, <#additional arguments#>];
        }
    
    encodeWithCoder
    
        - (void)encodeWithCoder:(NSCoder *)coder
        {
            [super encodeWithCoder:coder];
            <#statements#>
        }
    
    initWithCoder
    
        - (instancetype)initWithCoder:(NSCoder *)coder
        {
            self = [super initWithCoder:coder];
            if (self) {
                <#statements#>
            }
            return self;
        }
    
    isEqual
    
        - (BOOL)isEqual:(id)other
        {
            if (other == self) {
                return YES;
            } else if (![super isEqual:other]) {
                return NO;
            } else {
                return <#comparison expression#>;
            }
        }
    
        - (NSUInteger)hash
        {
            return <#hash expression#>;
        }
    
    typedefBlock
    
        typedef <#returnType#>(^<#name#>)(<#arguments#>);
    
    typedef
    
        typedef <#existing#> <#new#>;
    
    dispatch_once snippet
    
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            <#code to be executed once#>
        });
    
    dispatch_source timer
    
        dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, <#dispatchQueue#>);
        dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, <#intervalInSeconds#> * NSEC_PER_SEC, <#leewayInSeconds#> * NSEC_PER_SEC);
        dispatch_source_set_event_handler(timer, ^{
            <#code to be executed when timer fires#>
        });
        dispatch_resume(timer);
    
    dispatch_after snippet
    
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            <#code to be executed after a specified delay#>
        });
    
    inlineBlock
    
        <#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
            <#statements#>
        };
    
    enumdef
    
        typedef enum : NSUInteger {
            <#MyEnumValueA#>,
            <#MyEnumValueB#>,
            <#MyEnumValueC#>,
        } <#MyEnum#>;
    
    nsenum
    
        typedef NS_ENUM(NSUInteger, <#MyEnum#>) {
            <#MyEnumValueA#>,
            <#MyEnumValueB#>,
            <#MyEnumValueC#>,
        };
    
    nsoptions
    
        typedef NS_OPTIONS(NSUInteger, <#MyEnum#>) {
            <#MyEnumValueA#> = 1 << 0,
            <#MyEnumValueB#> = 1 << 1,
            <#MyEnumValueC#> = 1 << 2,
        };
    
    structdef
    
        struct <#struct name#> {
            <#struct fields#>
        };
    
    if
    
        if (<#condition#>) {
            <#statements#>
        }
    
    ifelse
        
        if (<#condition#>) {
            <#statements#>
        } else {
            <#statements#>
        }
    
    switch 
    
        switch (<#expression#>) {
            case <#constant#>:
                <#statements#>
                break;
                
            default:
                break;
        }
    
    while
    
        while (<#condition#>) {
            <#statements#>
        }
    
    dowhile
    
        do {
            <#statements#>
        } while (<#condition#>);
    
    for
    
        for (<#initialization#>; <#condition#>; <#increment#>) {
            <#statements#>
        }    
    
    test
    
        - (void)test<#Name#> {
            <#statements#>
        }
    
    observeValueForKeyPath 
    
        - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
        {
            if (context == <#context#>) {
                <#code to be executed upon observing keypath#>
            } else {
                [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
            }
        }
    
    
    带@符号的
    
    
    @protocol
    
        @protocol <#protocol name#> <NSObject>
    
        <#methods#>
    
        @end
    
    @interface
    
        @interface <#class name#> : <#superclass#>
    
        @end
    
    @interface-extension
    
        @interface <#class name#> ()
    
        @end
    
    @interface-category
    
        @interface <#class name#> (<#category name#>)
    
        @end
    
    @implementation
    
        @implementation <#class#>
    
        <#methods#>
    
        @end
    
    @implementation-category
    
        @implementation <#class#> (<#category name#>)
    
        <#methods#>
    
        @end
    
    @try
    
        @try {
            <#Code that can potentially throw an exception#>
        } @catch (NSException *exception) {
            <#Handle an exception thrown in the @try block#>
        } @finally {
            <#Code that gets executed whether or not an exception is thrown#>
        }
    
    @autoreleasepool
    
        @autoreleasepool {
            <#statements#>
        }
    
    @synchronized
    
        @synchronized (<#token#>) {
            <#statements#>
        }
    

    相关文章

      网友评论

          本文标题:修改Xcode自带代码片段CodeSnippets

          本文链接:https://www.haomeiwen.com/subject/iznewftx.html