[상단] iOS에서 Protocol을 사용하여 클래스에 공유된 속성

UXYInjectio


UXYInjectio can use Protocol to share data that data has been autosaved.
https://github.com/uxyheaven/UXYInjectio

How To Use

  • creat a Protocol (inherit UXYinjectioProtocol), define the property in that Protocol
  • let the class support Protocol
  • call method sharedWithSuiteName to bind a suite name
  • this data is autosaved
  • @protocol AppConfigData <UXYinjectioProtocol>
    @property (nonatomic, strong) NSString *version;
    @end
    
    @interface AppConfig : NSObject <AppConfigData>
    @end
    {
        AppConfig *config = [[AppConfig alloc] init];
        [config bindInjectioWithSuiteName:@"user1"];
        config.version = @"1.1";
     }
    
    {
        AppConfig *config = [[AppConfig alloc] init];
        [config bindInjectioWithSuiteName:@"user1"];
        NSLog(@"config
    "
    ); NSLog(@"%@
    "
    , config.version); }

    The value parameter can be only property list objects: NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. For NSArray and NSDictionary objects, their contents must be property list objects.
    @protocol PeopleData <UXYinjectioProtocol>
    @property (nonatomic, assign) float height2;
    @property (nonatomic, assign) int age3;
    @property (nonatomic ,assign) BOOL isAlive;
    @property (nonatomic, copy) NSString *name;
    @end
    
    @protocol ManData <UXYinjectioProtocol>
    @property (nonatomic, strong) NSArray *nicknames;
    @property (nonatomic, strong) NSDictionary *books;
    @end

    You can use any instance with any Protocol. The same suite name is same data.
    @interface Man : NSObject <ManData, PeopleData>
    @end
    
    {
        People *people = [[People alloc] init];
        [people bindInjectioWithSuiteName:@"bill"];
        people.name = @"name";
    
        Man *man = [[Man alloc] init];
        [man bindInjectioWithSuiteName:@"bill"];
        NSLog(@"%@
    "
    , man.name); }

    You can use different suite name to distinguish the data.
        AppConfig *config = [[AppConfig alloc] init];
        [config bindInjectioWithSuiteName:@"user1"];
        config.version = @"1.1";
    
        config = [[AppConfig alloc] init];
        [config bindInjectioWithSuiteName:@"user2"];
        config.version = @"1.2";
    

    UXYInjectio is based on NSUserDefaults. Call method immediatelySaveInjectio to synchronize.When the app enters the background it will be called automatically..

    좋은 웹페이지 즐겨찾기