相关疑难解决方法(0)

单例实例与类方法

虽然最近使用Objective-C和其中编写的各种库,但我注意到两个非常流行的单例模式.一个版本获取单例实例并调用其实例方法,而其他版本仅公开类方法,并且永远不会为您提供实例.所有这些都旨在抽象对单个资源(StoreKit,CoreData,Parse API等)的访问.例如,这是MKStoreKit中使用的前一种方法:

// initialize singleton during app boot
[MKStoreManager sharedManager]

// sometime later in the app
[[MKStoreManager sharedManager] buyFeature:kFeatureAId 
                                onComplete:^(NSString* purchasedFeature)
 {
     NSLog(@"Purchased: %@", purchasedFeature);
 }
                               onCancelled:^
 {
     NSLog(@"User Cancelled Transaction");
 }];
Run Code Online (Sandbox Code Playgroud)

或者NSUserDefaults,UIApplication等.另一种方法可以在MagicalRecord或Parse API中看到:

// configure API credentials sometime during app boot
[Parse setApplicationId:@"123456"
              clientKey:@"123456"];

// sometime later
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
[testObject setObject:@"bar" forKey:@"foo"];
[testObject save];
Run Code Online (Sandbox Code Playgroud)

这两种方法的优点和缺点是什么,其中一种基本上比另一种更好?

不必检索共享实例可以节省一些屏幕空间(性能差异可能无关紧要),但我是否以其他方式搞砸自己,例如,可测试性?

谢谢!

oop design-patterns objective-c

39
推荐指数
2
解决办法
7315
查看次数

标签 统计

design-patterns ×1

objective-c ×1

oop ×1